<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>JSLib API</title>
<link rel="stylesheet" type="text/css" href="common.css">
<script src="common.js"></script>
<script src="../dist/jslib.min.js"></script>
</head>
<body>
	<script>
		$js.UPLOAD_FILE='../php/upfile.php';
		$js.UPLOAD_PATH='../upload/';
	</script>


<!--
//                        
//     ##   #####  #####  
//    #  #  #    # #    # 
//   #    # #    # #    # 
//   ###### #    # #    # 
//   #    # #    # #    # 
//   #    # #####  #####  
//                        
-->
	<a name="add"></a>
	<h1>$js().add</h1>
	<h2>定义</h2>
	<p>$js().add(selector) : JSLib</p>
	<p>$js().add(HtmlString) : JSLib</p>
	<p>$js().add(HtmlElement) : JSLib</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>selector</td>
			<td>
				<div lang="zh">[可选]指定选择器字符串。</div>
				<div lang="en">[optional]A string containing one or more selectors to match.</div>
			</td>
		</tr>
		<tr>
			<td>HtmlString</td>
			<td>[可选]指定的HTML字符串。</td>
		</tr>
		<tr>
			<td>HtmlElement</td>
			<td>[可选]指定HTML节点。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>向当前匹配节点列表中添加新的节点。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre>&lt;div id="a1">
	&lt;div id="a2">a2 text&lt;/div>
	&lt;div id="a3">a3 text&lt;/div>
&lt;/div></pre>
	</fieldset>
	<fieldset>
		<legend>JavaScript</legend>
		<pre>$js('#a2').add('#a3').addClass('newclass');</pre>
	</fieldset>
	<p>当执行$js('#a2')时，此对象会匹配a2节点。再执行add后，此对象会增加a3节点到匹配列表中。</p>
	<fieldset>
		<legend>执行后原HTML信息变为</legend>
		<pre>&lt;div id="a1">
	&lt;div id="a2" class="newclass">a2 text&lt;/div>
	&lt;div id="a3" class="newclass">a3 text&lt;/div>
&lt;/div></pre>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.0.0版本开始支持。</p>



<!--
//                         #####                              
//     ##   #####  #####  #     # #        ##    ####   ####  
//    #  #  #    # #    # #       #       #  #  #      #      
//   #    # #    # #    # #       #      #    #  ####   ####  
//   ###### #    # #    # #       #      ######      #      # 
//   #    # #    # #    # #     # #      #    # #    # #    # 
//   #    # #####  #####   #####  ###### #    #  ####   ####  
//                                                            
-->
	<a name="addClass"></a>
	<h1>$js().addClass</h1>
	<h2>定义</h2>
	<p>$js().addClass(classname) : JSLib</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>classname</td>
			<td>[必须]指定的CSS类名。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>向当前匹配节点添加指定的CSS类。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre>&lt;div id="a1">
	&lt;div id="a2">a2 text&lt;/div>
	&lt;div id="a3">a3 text&lt;/div>
&lt;/div></pre>
	</fieldset>
	<fieldset>
		<legend>JavaScript</legend>
		<pre>$js('#a2').addClass('newclass');</pre>
	</fieldset>
	<fieldset>
		<legend>执行后原HTML信息变为</legend>
		<pre>&lt;div id="a1">
	&lt;div id="a2" class="newclass">a2 text&lt;/div>
	&lt;div id="a3">a3 text&lt;/div>
&lt;/div></pre>
	</fieldset>
	<h2>关联</h2>
	<p>
		<a href="api.html#hasClass">hasClass</a> &nbsp;
		<a href="api.html#removeClass">removeClass</a> &nbsp;
	</p>
	<h2>版本</h2>
	<p>本方法自0.0.0版本开始支持。</p>


<!--
//                                     
//     ##   ###### ##### ###### #####  
//    #  #  #        #   #      #    # 
//   #    # #####    #   #####  #    # 
//   ###### #        #   #      #####  
//   #    # #        #   #      #   #  
//   #    # #        #   ###### #    # 
//  
-->
	<a name="after"></a>
	<h1>$js().after</h1>
	<h2>定义</h2>
	<p>$js().after(selector) : JSLib</p>
	<p>$js().after(HtmlString) : JSLib</p>
	<p>$js().after(HtmlElement) : JSLib</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>selector</td>
			<td>[必须]选择器。</td>
		</tr>
		<tr>
			<td>HtmlString</td>
			<td>[必须]HTML字符串。</td>
		</tr>
		<tr>
			<td>HtmlElement</td>
			<td>[必须]HTML节点。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>向当前匹配节点后面添加指定的信息。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre>&lt;div id="a1">
	&lt;div id="a2">a2 text&lt;/div>
	&lt;div id="a3">a3 text&lt;/div>
&lt;/div></pre>
	</fieldset>
	<fieldset>
		<legend>JavaScript</legend>
		<pre>$js('#a2').after('&lt;div>abc&lt;/div>');</pre>
	</fieldset>
	<fieldset>
		<legend>执行后原HTML信息变为</legend>
		<pre>&lt;div id="a1">
	&lt;div id="a2">a2 text&lt;/div>
	&lt;div>abc&lt;/div>
	&lt;div id="a3">a3 text&lt;/div>
&lt;/div></pre>
	</fieldset>
	<h2>关联</h2>
	<p><a href="api.html#before">before</a><br></p>
	<h2>版本</h2>
	<p>本方法自0.1.0版本开始支持。</p>


<!--
//                               
//     ##        #   ##   #    # 
//    #  #       #  #  #   #  #  
//   #    #      # #    #   ##   
//   ######      # ######   ##   
//   #    # #    # #    #  #  #  
//   #    #  ####  #    # #    # 
//                               
-->
	<a name="ajax"></a>
	<h1>$js.ajax</h1>
	<h2>定义</h2>
	<p>$js.ajax(opts) : XHR</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>opts</td>
			<td>[必须]指定的访问参数。</td>
		</tr>
		<tr>
			<td>opts.headers</td>
			<td>[可选]访问头部数据。</td>
		</tr>
		<tr>
			<td>opts.url</td>
			<td>[可选]访问的文件路径。如果未传递此属性，则默认为当前页面。</td>
		</tr>
		<tr>
			<td>opts.method</td>
			<td>[可选]访问方式。可选参数：GET、POST、PUT，默认：GET。</td>
		</tr>
		<tr>
			<td>opts.type</td>
			<td>[可选]method参数的别名。如果同时设置了method和type则以method为准。</td>
		</tr>
		<tr>
			<td>opts.dataType</td>
			<td>[可选]返回数据类型，可选参数：json。<br>
				设置“json”类型，则回调函数success中的data数据类型会变为解析json后的对象，如果解析失败则会调用error回调函数。<br>
				设置“arraybuffer”类型，则回调中的data为ArrayBuffer类型。
			</td>
		</tr>
		<tr>
			<td>opts.post</td>
			<td>[可选]发送的POST信息。如果传递的是一个Object类型，则会自动转换为字符串。</td>
		</tr>
		<tr>
			<td>opts.interval</td>
			<td>[可选]周期性请求的时间间隔，单位：ms。注意：这个时间间隔是按照上次访问并处理后开始计时的。</td>
		</tr>
		<tr>
			<td>opts.error_interval</td>
			<td>[可选]周期性请求的时间间隔（出错时），单位：ms。注意：这个时间间隔是按照上次访问并处理后开始计时的。如果同时设置了interval，则访问出错时error_interval优先。是否访问出错以返回是否为200来界定。</td>
		</tr>
		<tr>
			<td>opts.success=function()|String</td>
			<td>[可选]请求成功后的回调的函数或后续操作符。<br>
			回调函数定义：function(data,status,xhr)，data为返回的数据，status为HTTP请求状态码，xhr为访问组件。<br>
			如果设置字符串"reload"，则成功访问后会自动重新加载当前页。
			</td>
		</tr>
		<tr>
			<td>opts.error</td>
			<td>[可选]请求失败后的回调的函数。函数定义function(xhr,status,ex)，xhr为访问组件，status为HTTP请求状态码，ex报错信息。</td>
		</tr>
		<tr>
			<td>opts.async</td>
			<td>[可选]异步请求，默认：true。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>AJAX方式访问数据。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>JavaScript</legend>
		<pre>$js.ajax({url:'test.html'});</pre>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.1.0版本开始支持。</p>
	<p>本方法自0.1.29版本开始支持interval参数。</p>
	<p>本方法自0.2.11版本开始支持success=reload参数。</p>
	<p>本方法自0.2.16版本开始支持dataType=arraybuffer参数。</p>
	<p>本方法自0.2.26版本开始支持error_interval参数。</p>



<!--
//                        
//     ##   #    #  ####  
//    #  #  #    # #    # 
//   #    # #    # #      
//   ###### #    # #  ### 
//   #    #  #  #  #    # 
//   #    #   ##    ####  
//                        
-->
	<a name="avg"></a>
	<h1>$js.avg</h1>
	<h2>定义</h2>
	<p>$js.avg(va,opts) : Number</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>va</td>
			<td>[必须]数值数组。</td>
		</tr>
		<tr>
			<td>opts</td>
			<td>[必须]可选参数。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>对指定数值数组求平均值。</p>
	<p>如果数组中存在非数字，则此项不计算在内。例如：$js.avg([1,2,3])=2；再例如$js.avg([1,'a',2])=1.5，其中'a'是被忽略的。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>JavaScript</legend>
		<pre id="avg_demo_html"></pre>
	</fieldset>
	<h2>演示</h2>
	<fieldset>
		<legend>演示区域</legend>
		<div id="avg_demo">
			<table border="1">
				<tr>
					<td>[1,2,3]</td>
					<td id="avg_demo_result1"></td>
				</tr>
				<tr>
					<td>[1,'a',2]</td>
					<td id="avg_demo_result2"></td>
				</tr>
			</table>
			<script>
				$js('#avg_demo_result1').text($js.avg([1,2,3]));
				$js('#avg_demo_result2').text($js.avg([1,'a',2]));
			</script>
		</div>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.1.15版本开始支持。</p>
	<script>$js('#avg_demo_html').text($js('#avg_demo').outerHTML()).unindent({ignore:1});</script>


<!--
//                                             #######        
//     ##   #####  #####  ###### #    # #####     #     ####  
//    #  #  #    # #    # #      ##   # #    #    #    #    # 
//   #    # #    # #    # #####  # #  # #    #    #    #    # 
//   ###### #####  #####  #      #  # # #    #    #    #    # 
//   #    # #      #      #      #   ## #    #    #    #    # 
//   #    # #      #      ###### #    # #####     #     ####  
//                                                            
-->
	<a name="appendTo"></a>
	<h1>$js().appendTo</h1>
	<h2>定义</h2>
	<p>$js().appendTo(HtmlElement) : JSLib</p>
	<p>$js().appendTo(HtmlElements) : JSLib</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>HtmlElement</td>
			<td>[必须]指定的节点。</td>
		</tr>
		<tr>
			<td>HtmlElements</td>
			<td>[必须]指定的节点列表。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>当前匹配节点添加到指定的节点下。</p>
	<p>当HtmlElements中存在多个节点时，则最终只会添加到第一个节点下。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre>&lt;div id="a2">a2 text&lt;/div>
&lt;div id="a1">
	&lt;div id="a3">a3 text&lt;/div>
&lt;/div></pre>
	</fieldset>
	<fieldset>
		<legend>JavaScript</legend>
		<pre>$js('#a2').appendTo($js('#a1'));</pre>
	</fieldset>
	<fieldset>
		<legend>执行后原HTML信息变为</legend>
		<pre>&lt;div id="a1">
	&lt;div id="a2">a2 text&lt;/div>
	&lt;div id="a3">a3 text&lt;/div>
&lt;/div></pre>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.0.0版本开始支持。</p>
	<p>本方法自0.2.19版本开始HtmlElement参数。</p>


<!--
//                             
//     ##   ##### ##### #####  
//    #  #    #     #   #    # 
//   #    #   #     #   #    # 
//   ######   #     #   #####  
//   #    #   #     #   #   #  
//   #    #   #     #   #    # 
//                             
-->
	<a name="attr"></a>
	<h1>$js().attr</h1>
	<h2>定义</h2>
	<p>$js().attr(attributeName) : String</p>
	<p>$js().attr(attributeName,attributeValue) : JSLib</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>attributeName</td>
			<td>[必须]属性名称。</td>
		</tr>
		<tr>
			<td>attributeValue</td>
			<td>[可选]属性值。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>未传递attributeValue值时，返回对象中第一个匹配节点的属性；传递attributeValue时设置全部匹配节点的属性。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre>&lt;div id="a1">
	&lt;div id="a2">a2 text&lt;/div>
	&lt;div id="a3">a3 text&lt;/div>
&lt;/div></pre>
	</fieldset>
	<fieldset>
		<legend>JavaScript</legend>
		<pre>$js('#a2').attr('title','test');</pre>
	</fieldset>
	<fieldset>
		<legend>执行后原HTML信息变为</legend>
		<pre>&lt;div id="a1">
	&lt;div id="a2" title="test">a2 text&lt;/div>
	&lt;div id="a3">a3 text&lt;/div>
&lt;/div></pre>
	</fieldset>
	<h2>关联</h2>
	<p><a href="#removeAttr">removeAttr</a></p>
	<h2>版本</h2>
	<p>本方法自0.1.0版本开始支持。</p>


<!--
//                                             
//   #####  ###### ######  ####  #####  ###### 
//   #    # #      #      #    # #    # #      
//   #####  #####  #####  #    # #    # #####  
//   #    # #      #      #    # #####  #      
//   #    # #      #      #    # #   #  #      
//   #####  ###### #       ####  #    # ###### 
//                                             
-->
	<a name="before"></a>
	<h1>$js().before</h1>
	<h2>定义</h2>
	<p>$js().before(selector) : JSLib</p>
	<p>$js().before(HtmlString) : JSLib</p>
	<p>$js().before(HtmlElement) : JSLib</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>selector</td>
			<td>[必须]选择器。</td>
		</tr>
		<tr>
			<td>HtmlString</td>
			<td>[必须]HTML字符串。</td>
		</tr>
		<tr>
			<td>HtmlElement</td>
			<td>[必须]HTML节点。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>向当前匹配节点前面添加指定的信息。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre>&lt;div id="a1">
	&lt;div id="a2">a2 text&lt;/div>
	&lt;div id="a3">a3 text&lt;/div>
&lt;/div></pre>
	</fieldset>
	<fieldset>
		<legend>JavaScript</legend>
		<pre>$js('#a2').before('&lt;div>abc&lt;/div>');</pre>
	</fieldset>
	<fieldset>
		<legend>执行后原HTML信息变为</legend>
		<pre>&lt;div id="a1">
	&lt;div>abc&lt;/div>
	&lt;div id="a2">a2 text&lt;/div>
	&lt;div id="a3">a3 text&lt;/div>
&lt;/div></pre>
	</fieldset>
	<h2>关联</h2>
	<p><a href="api.html#after">after</a><br></p>
	<h2>版本</h2>
	<p>本方法自0.1.0版本开始支持。</p>



<!--
//                          
//   #####  # #    # #####  
//   #    # # ##   # #    # 
//   #####  # # #  # #    # 
//   #    # # #  # # #    # 
//   #    # # #   ## #    # 
//   #####  # #    # #####  
//    
-->
	<a name="bind"></a>
	<h1>$js().bind</h1>
	<h2>定义</h2>
	<p>$js().bind(eventName,func) : JSLib</p>
	<h2>说明</h2>
	<p>本方法与.on方法功能相同，请参阅.on方法说明。</p>
	<h2>关联</h2>
	<p><a href="api.html#on">on</a><br></p>
	<h2>版本</h2>
	<p>本方法自0.0.0版本开始支持。</p>


<!--
//                                                   
//    ####  #       ####   ####  ######  ####  ##### 
//   #    # #      #    # #      #      #        #   
//   #      #      #    #  ####  #####   ####    #   
//   #      #      #    #      # #           #   #   
//   #    # #      #    # #    # #      #    #   #   
//    ####  ######  ####   ####  ######  ####    #   
//                                                   
-->
	<a name="closest"></a>
	<h1>$js().closest</h1>
	<h2>定义</h2>
	<p>$js().closest(selector) : JSLib</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>selector</td>
			<td>[可选]选择器字符串。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>向上查找包含当前元素的节点，如果设置了selector则需要符合。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre>&lt;div id="a1">
	&lt;div id="a2">a2 text&lt;/div>
	&lt;div id="a3">a3 text&lt;/div>
&lt;/div></pre>
	</fieldset>
	<fieldset>
		<legend>JavaScript</legend>
		<pre>console.log($js('#a2').closest('#a1').html());</pre>
	</fieldset>
	<fieldset>
		<legend>输出示例</legend>
		<pre>&lt;div id="a1">
	&lt;div id="a2">a2 text&lt;/div>
	&lt;div id="a3">a3 text&lt;/div>
&lt;/div></pre>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.0.0版本开始支持。</p>


<!--
//                        
//    ####   ####   ####  
//   #    # #      #      
//   #       ####   ####  
//   #           #      # 
//   #    # #    # #    # 
//    ####   ####   ####  
//                        
-->
	<a name="css"></a>
	<h1>$js().css</h1>
	<h2>定义</h2>
	<p>$js().css(name) : String</p>
	<p>$js().css(name,value) : JSLib</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>name</td>
			<td>[必须]css名称。</td>
		</tr>
		<tr>
			<td>value</td>
			<td>[可选]css值。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>如果未传递value，则返回对象中第一个节点的css属性值</p>
	<p>如果传递value，则设置对象中所有节点的css属性</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre>&lt;div id="a1">
	&lt;div id="a2">a2 text&lt;/div>
	&lt;div id="a3">a3 text&lt;/div>
&lt;/div></pre>
	</fieldset>
	<fieldset>
		<legend>JavaScript</legend>
		<pre>$js('#a2').css('color','#f00');</pre>
	</fieldset>
	<fieldset>
		<legend>运行后原HTML变为</legend>
		<pre>&lt;div id="a1">
	&lt;div id="a2" style="color:#f00;">a2 text&lt;/div>
	&lt;div id="a3">a3 text&lt;/div>
&lt;/div></pre>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.0.0版本开始支持。</p>


<!--
//                               
//    ####    ##   #       ####  
//   #    #  #  #  #      #    # 
//   #      #    # #      #      
//   #      ###### #      #      
//   #    # #    # #      #    # 
//    ####  #    # ######  ####  
//                               
-->
	<a name="calc"></a>
	<h1>$js().calc</h1>
	<h2>定义</h2>
	<p>$js.calc(expr,interval,opts) : Number</p>
	<p>$js().calc(expr,interval,opts) : JSLib</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>expr</td>
			<td>[必须]需计算的表达式。</td>
		</tr>
		<tr>
			<td>interval</td>
			<td>[可选]数值修约间隔，默认：1。</td>
		</tr>
		<tr>
			<td>opts</td>
			<td>[可选]附加选项。</td>
		</tr>
		<tr>
			<td>opts.gb8170=false|true</td>
			<td>[可选]数值修约标准是否遵循GB8170，默认：false。</td>
		</tr>
		<tr>
			<td>opts.isNaN0=false|true</td>
			<td>[可选]表达式中的变量非数字时是否按照0处理，默认：false。</td>
		</tr>
		<tr>
			<td>opts.NaN2empty=false|true</td>
			<td>[可选]计算结果为NaN时按照空字符串处理，默认：false。（注：此属性只有在设置了修约间隔才会起作用）</td>
		</tr>
		<tr>
			<td>opts.prefix=String</td>
			<td>[可选]显示文本的前缀，默认：无。</td>
		</tr>
		<tr>
			<td>opts.zero2empty=false|true</td>
			<td>[可选]计算结果为0时按照空字符串处理，默认：false。</td>
		</tr>
	</table>
	<h2>全局参数</h2>
	<table>
		<tr>
			<td>$js.calc.DEFAULT_GB8170=false|true (不推荐使用)</td>
			<td>[可选]全局默认的数值修约是否遵循GB8170。【此参数，请使用$js.round.DEFAULT_GB8170替代】</td>
		</tr>
		<tr>
			<td>$js.calc.DEFAULT_NaN2empty=false|true</td>
			<td>[可选]全局默认的计算结果处理。</td>
		</tr>
		<tr>
			<td>$js.calc.DEFAULT_DICT={} (不推荐使用)</td>
			<td>[可选]全局默认的数值修约字典，使用方式请参照示例。【此参数，请使用$js.round.DEFAULT_DICT替代】</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>需要注意！静态方法和实例方法的运行方式是完全不一样的，静态方法仅仅在调用时计算一次，实例方法是绑定后的计算。</p>
	<p>静态方法$js.calc是直接返回表达式计算结果。</p>
	<p>实例方法$js().calc会自动绑定，并自动计算表达式。需要注意的是，计算结果如果是input则自动置只读属性。</p>
	<p>expr中所有的参数都以大括号包围，例如读取&lt;input name="abc">的值，则expr中使用{@abc}表示。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="calc_demo_html"></pre>
	</fieldset>
	<h2>演示</h2>
	<fieldset>
		<legend>JavaScript</legend>
		<div id="calc_demo">
			<table>
				<tr>
					<th>No</th>
					<th>Number</th>
					<th>Price</th>
					<th>Amount</th>
				</tr>
				<tr>
					<td>1</td>
					<td><input type="text" name="calc_demo_1num"></td>
					<td><input type="text" name="calc_demo_1price"></td>
					<td><input type="text" name="calc_demo_1amount"></td>
				</tr>
				<tr>
					<td>2</td>
					<td><input type="text" name="calc_demo_2num"></td>
					<td><input type="text" name="calc_demo_2price"></td>
					<td><input type="text" name="calc_demo_2amount"></td>
				</tr>
				<tr>
					<td>3</td>
					<td><input type="text" name="calc_demo_3num"></td>
					<td><input type="text" name="calc_demo_3price"></td>
					<td><input type="text" name="calc_demo_3amount"></td>
				</tr>
				<tr>
					<td>4</td>
					<td><input type="text" name="calc_demo_4num"></td>
					<td><input type="text" name="calc_demo_4price"></td>
					<td><input type="text" name="calc_demo_4amount"></td>
				</tr>
				<tr>
					<td>5</td>
					<td><input type="text" name="calc_demo_5num"></td>
					<td><input type="text" name="calc_demo_5price"></td>
					<td><input type="text" name="calc_demo_5amount"></td>
				</tr>
			</table>
			<script>
				$js('@calc_demo_1amount').calc('{@calc_demo_1num}*{@calc_demo_1price}');
				$js('@calc_demo_2amount').calc('{@calc_demo_2num}*{@calc_demo_2price}',0.01,{isNaN0:true});

				$js.calc.DEFAULT_DICT['三位小数']=0.001;
				$js('@calc_demo_3amount').calc('{@calc_demo_3num}*{@calc_demo_3price}','三位小数');

				$js('@calc_demo_4amount').calc('{@calc_demo_4num}*{@calc_demo_4price}',0.01,{prefix:'≥'});

				$js('@calc_demo_5amount').calc('{@calc_demo_5num}*{@calc_demo_5price}',0.01,{zero2empty:true});
			</script>
		</div>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.1.13版本开始支持。</p>
	<p>0.1.14版本开始支持$js.calc.DEFAULT_DICT。</p>
	<p>0.1.21版本开始支持opts.prefix参数。</p>
	<p>0.1.28版本开始支持opts.NaN2empty参数。</p>
	<p>0.1.30版本开始支持opts.zero2empty参数。</p>
	<script>$js('#calc_demo_html').text($js('#calc_demo').outerHTML()).unindent({ignore:1});</script>




<!--
//                                               
//    ####   ####  #    # ###### # #####  #    # 
//   #    # #    # ##   # #      # #    # ##  ## 
//   #      #    # # #  # #####  # #    # # ## # 
//   #      #    # #  # # #      # #####  #    # 
//   #    # #    # #   ## #      # #   #  #    # 
//    ####   ####  #    # #      # #    # #    # 
//                                               
-->
	<a name="confirm"></a>
	<h1>$js.confirm</h1>
	<h2>定义</h2>
	<p>$js.confirm(opts) : $js.window</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>opts</td>
			<td>[必须]选项。</td>
		</tr>
		<tr>
			<td>opts.text</td>
			<td>[可选]显示提示信息的文本信息。</td>
		</tr>
		<tr>
			<td>opts.btn1text:'确定'</td>
			<td>[可选]按钮1的文字。</td>
		</tr>
		<tr>
			<td>opts.btn1click:function()</td>
			<td>[可选]按钮1点击后的处理程序。</td>
		</tr>
		<tr>
			<td>opts.btn1icon:String</td>
			<td>[可选]按钮1图标文件路径的文字。</td>
		</tr>
		<tr>
			<td>opts.btn2text:'取消'</td>
			<td>[可选]按钮2的文字。</td>
		</tr>
		<tr>
			<td>opts.btn2click:function()</td>
			<td>[可选]按钮2点击后的处理程序。</td>
		</tr>
		<tr>
			<td>opts.btn2icon:String</td>
			<td>[可选]按钮2图标文件路径的文字。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>此方法生成一个确认窗口，默认显示“确定”、“取消”按钮供选择。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="confirm_show_html"></pre>
	</fieldset>
	<h2>演示</h2>
	<fieldset>
		<legend>演示区域</legend>
		<div id="confirm_demo_html">
			<button id="confirm_demo_btn1">点击弹出确认窗口</button>
			<script>
				confirm_demo_btn1.onclick=function()
				{
					$js.confirm({text:'这是一段确认窗口的提示文字。',
						btn1click:function(){alert('btn1 click')},
						btn2click:function(){alert('btn2 click')},
					});
				}
			</script>
		</div>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.1.26版本开始支持。</p>
	<script>$js('#confirm_show_html').text($js('#confirm_demo_html').outerHTML()).unindent({ignore:1});</script>


<!--
//                                     
//    ####   ####  #    # #    # ##### 
//   #    # #    # #    # ##   #   #   
//   #      #    # #    # # #  #   #   
//   #      #    # #    # #  # #   #   
//   #    # #    # #    # #   ##   #   
//    ####   ####   ####  #    #   #   
//                                     
-->
	<a name="count"></a>
	<h1>$js.count</h1>
	<h2>定义</h2>
	<p>$js.count(arr) : Number</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>arr</td>
			<td>[必须]包含需要统计的数值数组。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>返回数组中数值的数量。本方法会自动去除非数字的数据。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>JavaScript</legend>
		<pre id="count_src"></pre>
	</fieldset>
	<fieldset>
		<legend>输出结果</legend>
		<div id="count_result"></div>
	</fieldset>
	<script id="count_js">
		let count_arr=[123,234,'a',NaN,345];
		let count_result=$js.count(count_arr);
		$js('#count_result').text(count_result);
	</script>
	<h2>版本</h2>
	<p>本方法自0.1.34版本开始支持。</p>
	<script>$js('#count_src').text($js('#count_js').outerHTML()).unindent({ignore:1});</script>



<!--
//                                     
//    ####  ##### #####  ###### ###### 
//   #    #   #   #    # #      #      
//   #        #   #    # #####  #####  
//   #        #   #####  #      #      
//   #    #   #   #   #  #      #      
//    ####    #   #    # ###### ###### 
//                                     
-->
	<a name="ctree"></a>
	<h1>$js.ctree / $js().ctree</h1>
	<h2>定义</h2>
	<p>$js.ctree(opts) : HtmlElement</p>
	<p>$js().ctree(opts) : JSLib</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>opts</td>
			<td>[必须]生成树的选项。</td>
		</tr>
		<tr>
			<td>opts.parent</td>
			<td>[可选]树型选择元素结构的上层元素(HtmlElement)或元素ID(String)，如果不设置则在当前位置插入$js.ctree元素。注意，实例方法调用时会忽略此参数。</td>
		</tr>
		<tr>
			<td>opts.el_replace:false|true</td>
			<td>[可选]是否直接使用指定的parent节点，而不是插入。</td>
		</tr>
		<tr>
			<td>opts.el_insert_before:false|true</td>
			<td>[可选]插入到opts.parent节点内最前面，默认是插入到最后。此参数与el_replace是互斥的。</td>
		</tr>
		<tr>
			<td>opts.id</td>
			<td>[可选]树型选择元素ID。</td>
		</tr>
		<tr>
			<td>opts.name</td>
			<td>[可选]自动生成的input节点名称。</td>
		</tr>
		<tr>
			<td>opts.mode=1|2</td>
			<td>[可选]1单选，2多选。默认:1单选。</td>
		</tr>
		<tr>
			<td>opts.selectleaf:true|false</td>
			<td>[可选]只能选择叶子。</td>
		</tr>
		<tr>
			<td>opts.selected:[...]</td>
			<td>[可选]默认选项。数据结构，同opts.data。</td>
		</tr>
		<tr>
			<td>opts.selected_on:true|false</td>
			<td>[可选]默认选项是否出发onselected事件，默认：true。</td>
		</tr>
		<tr>
			<td>opts.width:'160px'</td>
			<td>[可选]设置选择区域宽度。</td>
		</tr>
		<tr>
			<td>opts.popup_width:'160px'</td>
			<td>[可选]设置弹出区域宽度，如果未设置，则与width相同。</td>
		</tr>
		<tr>
			<td>opts.popup_height:'200px',</td>
			<td>[可选]设置弹出区域高度。</td>
		</tr>
		<tr>
			<td>opts.onselected:function(data,datalist){}</td>
			<td>[可选]节点选中后触发。data为当前选中节点信息，datalist为当前所有选中的节点信息。</td>
		</tr>
		<tr>
			<td>opts.onremoved:function(data,datalist){}</td>
			<td>[可选]节点移除后触发。data为当前选中节点信息，datalist为当前所有选中的节点信息。</td>
		</tr>
		<tr>
			<td>opts.search:true|false</td>
			<td>[可选]是否显示搜索框。</td>
		</tr>
		<tr>
			<td>opts.suffix:"&lt;br>"</td>
			<td>[可选]每个选中项显示的后缀。</td>
		</tr>
		<tr>
			<td>opts.dataurl:''</td>
			<td>[可选]数据读取地址(异步读取，参数与data互斥)。</td>
		</tr>
		<tr>
			<td>opts.data</td>
			<td>[可选]树型结构数据。数据结构请参考$js.tree中的opts.data部分。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>此方法生成可展开的树型选择框以及对应的input元素，可直接在form中进行提交。成功执行后返回一个封装后的HtmlElement对象：</p>
	<p>此方法同时存在静态方法和实例方法，使用时请根据具体场景选择。需要注意的是，实例方法会自动忽略opts.parent参数。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="ctree_show_html"></pre>
	</fieldset>
	<fieldset>
		<legend>JavaScript</legend>
		<pre id="ctree_show_js"></pre>
	</fieldset>
	<h2>演示</h2>
	<fieldset>
		<legend>演示区域</legend>
		<div id="ctree_demo_html">
			<iframe name="ctree_demo_iframe" style="float: right"></iframe>
			<form target="ctree_demo_iframe" action="echo.html">
				name：<input type="text" name="name" value="username"><br>
				value：<div id="ctree_demo_1"></div><br>
				<input type="submit" value="Submit">
			</form>
		</div>
		<script>
			$js('#ctree_show_html').text($js('#ctree_demo_html').outerHTML()).unindent({ignore:1});
		</script>
		<script id="ctree_demo_js">
			$js('#ctree_demo_1').ctree({
				name:'ctree_input',
				el_replace:true,
				selectleaf:true,
				mode:2,
				selected:[{i:2,t:'node 2'}],
				data:[
					{i:1,t:'node 1',c:[
						{i:11,t:'node 11'},
						{i:12,t:'node 12'},
					]},
					{i:2,t:'node 2'},
					{i:3,t:'node 3',c:[
						{i:31,t:'node 31'},
						{i:32,t:'node 32'},
					]},
				]
			});
		</script>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.1.6版本开始支持。</p>
	<script>$js('#ctree_show_js').text($js('#ctree_demo_js').outerHTML()).unindent({ignore:1});</script>


<!--
//                               
//   ######   ##    ####  #    # 
//   #       #  #  #    # #    # 
//   #####  #    # #      ###### 
//   #      ###### #      #    # 
//   #      #    # #    # #    # 
//   ###### #    #  ####  #    # 
//                               
-->
	<a name="each"></a>
	<h1>$js().each</h1>
	<h2>定义</h2>
	<p>$js().each(func) : JSLib</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>func</td>
			<td>[必须]回调函数function(index,element)，参数index为节点的编号，element为节点。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>遍历当前对象中的所有节点。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre>&lt;div id="a1">a1 text&lt;/div>
&lt;div id="a2">a2 text&lt;/div>
&lt;div id="a3">a3 text&lt;/div></pre>
	</fieldset>
	<fieldset>
		<legend>JavaScript</legend>
		<pre>$js('div').each(function(index,element){console.log(index,element.innerHTML)});</pre>
	</fieldset>
	<fieldset>
		<legend>输出示例</legend>
		<pre>0	&lt;div id="a1">a1 text&lt;/div>
1	&lt;div id="a2">a2 text&lt;/div>
2	&lt;div id="a3">a3 text&lt;/div></pre>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.0.0版本开始支持。</p>


<!--
//                 
//   ######  ####  
//   #      #    # 
//   #####  #    # 
//   #      #  # # 
//   #      #   #  
//   ######  ### # 
//                 
-->
	<a name="eq"></a>
	<h1>$js().eq</h1>
	<h2>定义</h2>
	<p>$js().eq(index) : JSLib</p>
	<h2>说明</h2>
	<p>返回当前对象中指定的节点。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre>&lt;div id="a1">a1 text&lt;/div>
&lt;div id="a2">a2 text&lt;/div>
&lt;div id="a3">a3 text&lt;/div></pre>
	</fieldset>
	<fieldset>
		<legend>JavaScript</legend>
		<pre>console.log($js('div').eq(2).html());</pre>
	</fieldset>
	<fieldset>
		<legend>输出示例</legend>
		<pre>&lt;div id="a2">a2 text&lt;/div></pre>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.0.0版本开始支持。</p>


<!--
//                          
//   ###### # #    # #####  
//   #      # ##   # #    # 
//   #####  # # #  # #    # 
//   #      # #  # # #    # 
//   #      # #   ## #    # 
//   #      # #    # #####  
//                          
-->
	<a name="find"></a>
	<h1>$js().find</h1>
	<h2>定义</h2>
	<p>$js().find(selector) : JSLib</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>selector</td>
			<td>[必须]选择器字符串。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>在当前匹配的节点下查找符合selector的节点。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre>&lt;div id="a1">
	&lt;div id="a2">a2 text&lt;/div>
	&lt;div id="a3">a3 text&lt;/div>
&lt;/div></pre>
	</fieldset>
	<fieldset>
		<legend>JavaScript</legend>
		<pre>console.log($js('#a1').find('#a2').html());</pre>
	</fieldset>
	<fieldset>
		<legend>输出示例</legend>
		<pre>&lt;div id="a2">a2 text&lt;/div></pre>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.0.0版本开始支持。</p>



<!--
//                                
//   ###### # #####   ####  ##### 
//   #      # #    # #        #   
//   #####  # #    #  ####    #   
//   #      # #####       #   #   
//   #      # #   #  #    #   #   
//   #      # #    #  ####    #   
//                                
-->                                                                                                                     
	<a name="first"></a>
	<h1>$js().first</h1>
	<h2>定义</h2>
	<p>$js().first() : JSLib</p>
	<h2>说明</h2>
	<p>返回当前对象中第一个节点。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre>&lt;div id="a1">a1 text&lt;/div>
&lt;div id="a2">a2 text&lt;/div>
&lt;div id="a3">a3 text&lt;/div></pre>
	</fieldset>
	<fieldset>
		<legend>JavaScript</legend>
		<pre>console.log($js('div').first().html());</pre>
	</fieldset>
	<fieldset>
		<legend>输出示例</legend>
		<pre>&lt;div id="a1">a1 text&lt;/div></pre>
	</fieldset>
	<h2>关联</h2>
	<p>
		<a href="api.html#firstElement">firstElement</a> &nbsp;
	</p>
	<h2>版本</h2>
	<p>本方法自0.0.0版本开始支持。</p>



<!--
//                                #######                                          
//   ###### # #####   ####  ##### #       #      ###### #    # ###### #    # ##### 
//   #      # #    # #        #   #       #      #      ##  ## #      ##   #   #   
//   #####  # #    #  ####    #   #####   #      #####  # ## # #####  # #  #   #   
//   #      # #####       #   #   #       #      #      #    # #      #  # #   #   
//   #      # #   #  #    #   #   #       #      #      #    # #      #   ##   #   
//   #      # #    #  ####    #   ####### ###### ###### #    # ###### #    #   #   
//                                                                                 
-->
	<a name="firstElement"></a>
	<h1>$js().firstElement</h1>
	<h2>定义</h2>
	<p>$js().firstElement : HtmlElement</p>
	<h2>说明</h2>
	<p>返回当前JSLib中第一个元素，如果当前未包含任何元素则不返回有效数据（即undefined）。</p>
	<p>这个方法与$js().first()的区别是$js().first()返回的是一个JSLib对象，而$js().firstElement返回的是一个HtmlElement元素。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre>&lt;div id="a1">a1 text&lt;/div>
&lt;div id="a2">a2 text&lt;/div>
&lt;div id="a3">a3 text&lt;/div></pre>
	</fieldset>
	<fieldset>
		<legend>JavaScript</legend>
		<pre>console.log($js('div').firstElement);</pre>
	</fieldset>
	<fieldset>
		<legend>输出示例</legend>
		<pre>[object HTMLPreElement]</pre>
	</fieldset>
	<h2>关联</h2>
	<p>
		<a href="api.html#first">first</a> &nbsp;
	</p>
	<h2>版本</h2>
	<p>本属性自0.1.8版本开始支持。</p>


<!--
//                                     
//   ###### #       ####    ##   ##### 
//   #      #      #    #  #  #    #   
//   #####  #      #    # #    #   #   
//   #      #      #    # ######   #   
//   #      #      #    # #    #   #   
//   #      ######  ####  #    #   #   
//                                     
-->
	<a name="float"></a>
	<h1>$js().float</h1>
	<h2>定义</h2>
	<p>$js().float() : Number</p>
	<p>$js().float(nan0) : Number</p>
	<p>$js().float(num,interval,opts) : JSLib</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>nan0=false|true</td>
			<td>[可选]nan0=true时，值为非数字时返回0。默认：false。</td>
		</tr>
		<tr>
			<td>num</td>
			<td>[可选]需设置的值。</td>
		</tr>
		<tr>
			<td>interval</td>
			<td>[可选]修约间隔。注：本修约值支持$js.round.DEFAULT_DICT字典。</td>
		</tr>
		<tr>
			<td>opts</td>
			<td>[可选]附加选项。</td>
		</tr>
		<tr>
			<td>opts.zero2empty=false|true</td>
			<td>[可选]num=0时，显示为空字符串。</td>
		</tr>
		<tr>
			<td>opts.nan2empty=false|true</td>
			<td>[可选]num=NaN时，显示为空字符串。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>没有参数或只传递nan0参数时，返回元素中第一个符合条件的数值，如果当前未包含任何元素则返回NaN。</p>
	<p>注：如果JSLib匹配列表中包含checkbox/radio元素时，只有在选中状态才会返回有效数值。</p>
	<p>传递num参数时，设置指定数字到当前符合元素上。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="float_demo_html"></pre>
	</fieldset>
	<h2>演示</h2>
	<fieldset>
		<legend>演示区域</legend>
		<form id="float_demo">
			<input type="text" name="float_demo_input1" value="123">
			<label><input type="checkbox" name="float_demo_input2" value="234">checkbox</label>
			<input type="button" value="TEST" onclick="$js('#float_demo_result').html('input1='+$js('@float_demo_input1').float()+'<br>input2='+$js('@float_demo_input2').float());">
		</form>
		<fieldset>
			<legend>运行结果</legend>
			<div id="float_demo_result"></div>
		</fieldset>
	</fieldset>
	<h2>关联</h2>
	<p>
		<a href="api.html#int">int</a> &nbsp;
		<a href="api.html#val">val</a> &nbsp;
	</p>
	<h2>版本</h2>
	<p>本属性自0.1.13版本开始支持。</p>
	<p>自1.0.2版本开始支持opts.nan2empty参数。</p>
	<script>$js('#float_demo_html').text($js('#float_demo').outerHTML()).unindent({ignore:1});</script>



<!--
//                               
//   ######  ####  #####  #    # 
//   #      #    # #    # ##  ## 
//   #####  #    # #    # # ## # 
//   #      #    # #####  #    # 
//   #      #    # #   #  #    # 
//   #       ####  #    # #    # 
//                               
-->
	<a name="form"></a>
	<h1>$js.form</h1>
	<h2>定义</h2>
	<p>$js.form(opts) : None</p>
	<p>$js().form(opts) : JSLib</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>opts</td>
			<td>[可选]参数。</td>
		</tr>
		<tr>
			<td>opts.form : HtmlElement</td>
			<td>[可选]指定的FORM节点。如果未指定，则首先查找当前标签所在的FORM，如果未找到则查找当前页面第一个FORM，如果还未找到，则直接返回。</td>
		</tr>
		<tr>
			<td>opts.action : String</td>
			<td>[可选]提交指定的URL。</td>
		</tr>
		<tr>
			<td>opts.formData : FormData</td>
			<td>[可选]直接提交指定FormData数据。如果同时设置了formData和form参数，则以formData参数为准。</td>
		</tr>
		<tr>
			<td>opts.onsubmit:function(form){}</td>
			<td>[可选]提交前执行的脚本。参数form为当前提交表单，如果此方法返回false则不再进行提交操作。</td>
		</tr>
		<tr>
			<td>opts.success:function(data) | String</td>
			<td>[可选]调用成功后的回调函数，data为服务器返回数据。</td>
		</tr>
		<tr>
			<td>opts.success_callback:function(data)</td>
			<td>[可选]系统默认的success执行后,再次调用的方法。</td>
		</tr>
		<tr>
			<td>opts.error:function(data)</td>
			<td>[可选]调用失败后的回调函数，data为服务器返回数据。</td>
		</tr>
		<tr>
			<td>opts.location:''</td>
			<td>[可选]当success=302时使用。</td>
		</tr>
		<tr>
			<td>opts.prompt_timeout:0</td>
			<td>[可选]设置提醒信息关闭时间，单位：ms。此参数仅针对正常信息，出错信息不自动关闭。此值设置为0时需手工关闭,设置为-1时正常系统提示不再显示。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>这个函数是使用AJAX方式模拟FORM提交，并显示提交进度及显示返回结果的方法。</p>
	<p>如果参数opts.success=close，且返回数据ret[success]=true时默认直接关窗；返回数据ret[success]=false时显示错误信息。这个有一个前置条件，当前form必须是在$js.window创建的窗口中。</p>
	<p>如果参数opts.success=reload，且返回数据ret[success]=true时默认重新加载当前页面；返回ret[success]=false时显示错误信息。</p>
	<p>如果参数opts.success=reload2，且返回数据ret[success]=true时默认重新加载当前页面（reload2采用Refresh方式，可实现访问的页面刷新后显示到刷新前的位置）；返回ret[success]=false时显示错误信息。</p>
	<p>如果参数opts.success=302，且返回数据ret[success]=true时页面转到opts.location页面；返回数据ret[success]=false时显示错误信息。</p>
	<p>如果参数opts.success=302id，则如果当前页面URL中的参数id与返回data.id不一致时做302操作，否则不做任何操作。</p>
	<p>如果未设置参数error，则出错的事后会自动调用参数success。</p>
	<p>数据接收文件，在数据处理后需要返回JSON格式结果，标准最小格式，正常为：{success:true}，出错为：{success:false}</p>
	<p>如果有需要显示的信息，则返回msg，例如：{success:false,msg:'保存时发生未知错误!'}</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="form_demo_html"></pre>
	</fieldset>
	<fieldset>
		<legend>form.1.json</legend>
		<pre>{"success":true}</pre>
	</fieldset>
	<fieldset>
		<legend>form.2.json</legend>
		<pre>{"success":false}</pre>
	</fieldset>
	<fieldset>
		<legend>form.3.json</legend>
		<pre>{"success":true,"msg":"自定义信息"}</pre>
	</fieldset>
	<fieldset>
		<legend>form.4.json</legend>
		<pre>{"success":false,"msg":"自定义错误信息"}</pre>
	</fieldset>
	<h2>演示</h2>
	<fieldset>
		<legend>演示区域</legend>
			<form method="post" action="form.php" enctype="multipart/form-data" id="form_demo">
				普通文本框<input type="text" name="text" value="汉字"><br>
				复选框<input type="checkbox" name="checkbox1" value="1"><br>
				单选框<input type="radio" name="radio1" value="1" checked required>
				<input type="radio" name="radio1" value="2" required><br>
				文件上传<input type="file" name="file[]"><br>
				返回结果模拟选择
				<label><input type="radio" name="return_value" value="1" checked>正常返回</label>
				<label><input type="radio" name="return_value" value="3">正常返回，自定义信息</label>
				<label><input type="radio" name="return_value" value="2">错误返回</label>
				<label><input type="radio" name="return_value" value="4">错误返回，自定义信息</label>
				<br>
				<input type="submit" value="SUBMIT">
				<script>
					$js.form({
						onsubmit:function(form) //onsubmit事件，在这里仅仅为了模拟各种返回值
						{
							form.setAttribute('action','form.'+$js('@return_value:checked').val()+'.json');
						}
					});
				</script>
			</form>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.1.17版本开始支持。</p>
	<p>本方法自0.2.19版本开始支持formData参数。</p>
	<script>$js('#form_demo_html').text($js('#form_demo').outerHTML()).unindent({ignore:1});</script>



<!--
//                  #####   #####   #####    ###   
//    ####  #####  #     # #     # #     #  #   #  
//   #    # #    #       #       # #       #     # 
//   #      #####   #####   #####  ######  #     # 
//   #  ### #    # #       #       #     # #     # 
//   #    # #    # #       #       #     #  #   #  
//    ####  #####  ####### #######  #####    ###   
//                                                 
-->
	<a name="gb2260"></a>
	<h1>$js.gb2260</h1>
	<h2>定义</h2>
	<p>$js.gb2260(code,opts) : String</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>code</td>
			<td>[必须]需要转换的GB2260代码。支持2位、4位、6位代码。</td>
		</tr>
		<tr>
			<td>opts.show=false|true</td>
			<td>[可选]是否直接显示。默认：false。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>这个方法用于GB2260的代码转地区文本。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="gb2260_demo_html"></pre>
	</fieldset>
	<h2>演示</h2>
	<fieldset>
		<legend>演示区域</legend>
			<div id="gb2260_demo">
				<table border="1">
					<tr>
						<td>130123</td>
						<td id="gb2260_demo_1"></td>
						<td id="gb2260_demo_2"></td>
						<td id="gb2260_demo_3"></td>
						<td id="gb2260_demo_4"></td>
						<td id="gb2260_demo_5"></td>
						<td id="gb2260_demo_6"></td>
						<td><script>$js.gb2260('130124',{show:true})</script></td>
					</tr>
				</table>
				<script>
					$js('#gb2260_demo_1').text($js.gb2260('13'));
					$js('#gb2260_demo_2').text($js.gb2260('1300'));
					$js('#gb2260_demo_3').text($js.gb2260('130000'));
					$js('#gb2260_demo_4').text($js.gb2260('1301'));
					$js('#gb2260_demo_5').text($js.gb2260('130100'));
					$js('#gb2260_demo_6').text($js.gb2260('130123'));
				</script>
			</div>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.1.18版本开始支持。本方法需要jslib.gb.min.js文件支持。</p>
	<p>本方法自0.2.13版本开始参数支持2、4、6位代码。</p>
	<p>本方法自0.2.21版本开始支持参数opts.show。</p>
	<script>$js('#gb2260_demo_html').text($js('#gb2260_demo').outerHTML()).unindent({ignore:1});</script>



	<a name="gb2260gb2659"></a>
	<h1>$js.gb2260gb2659</h1>
	<h2>定义</h2>
	<p>$js.gb2260gb2659(code,opts) : String</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>code</td>
			<td>[必须]需要转换的GB2260或GB2659代码。GB2260支持2位、4位、6位代码，GB2659支持两位字母。</td>
		</tr>
		<tr>
			<td>opts.show=false|true</td>
			<td>[可选]是否直接显示。默认：false。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>这个方法用于GB2260或GB2659的代码转地区文本。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="gb2260gb2659_demo_html"></pre>
	</fieldset>
	<h2>演示</h2>
	<fieldset>
		<legend>演示区域</legend>
			<div id="gb2260gb2659_demo">
				<table border="1">
					<tr>
						<td>130123</td>
						<td id="gb2260gb2659_demo_1"></td>
						<td id="gb2260gb2659_demo_2"></td>
						<td id="gb2260gb2659_demo_3"></td>
						<td id="gb2260gb2659_demo_4"></td>
						<td id="gb2260gb2659_demo_5"></td>
						<td id="gb2260gb2659_demo_6"></td>
						<td><script>$js.gb2260gb2659('130124',{show:true})</script></td>
						<td><script>$js.gb2260gb2659('CN',{show:true})</script></td>
					</tr>
				</table>
				<script>
					$js('#gb2260gb2659_demo_1').text($js.gb2260gb2659('13'));
					$js('#gb2260gb2659_demo_2').text($js.gb2260gb2659('1300'));
					$js('#gb2260gb2659_demo_3').text($js.gb2260gb2659('130000'));
					$js('#gb2260gb2659_demo_4').text($js.gb2260gb2659('1301'));
					$js('#gb2260gb2659_demo_5').text($js.gb2260gb2659('130100'));
					$js('#gb2260gb2659_demo_6').text($js.gb2260gb2659('130123'));
				</script>
			</div>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.2.21版本开始支持。</p>
	<script>$js('#gb2260gb2659_demo_html').text($js('#gb2260gb2659_demo').outerHTML()).unindent({ignore:1});</script>



	<a name="gb2260gb2659match"></a>
	<h1>$js.gb2260gb2659match</h1>
	<h2>定义</h2>
	<p>$js.gb2260gb2659match(name,opts) : Array</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>name</td>
			<td>[必须]查询关键字。</td>
		</tr>
		<tr>
			<td>opts.target=''|HtmlElement</td>
			<td>[可选]数据填充节点。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>这个方法用于查询GB2260或GB2659的名称转代码。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="gb2260gb2659match_demo_html"></pre>
	</fieldset>
	<h2>演示</h2>
	<fieldset>
		<legend>演示区域</legend>
			<div id="gb2260gb2659match_demo">
				<table border="1">
					<tr>
						<td id="gb2260gb2659match_demo_1"></td>
						<td id="gb2260gb2659match_demo_2"></td>
						<td id="gb2260gb2659match_demo_3"></td>
						<td id="gb2260gb2659match_demo_4"></td>
						<td id="gb2260gb2659match_demo_5"></td>
						<td><input type="text" id="gb2260gb2659match_demo_6"></td>
					</tr>
				</table>
				<script>
					$js('#gb2260gb2659match_demo_1').text($js.gb2260gb2659match('中国'));
					$js('#gb2260gb2659match_demo_2').text($js.gb2260gb2659match('山东'));
					$js('#gb2260gb2659match_demo_3').text($js.gb2260gb2659match('济南'));
					$js('#gb2260gb2659match_demo_4').text($js.gb2260gb2659match('京'));
					$js.gb2260gb2659match('河北',{target:'#gb2260gb2659match_demo_5'});
					$js.gb2260gb2659match('北京',{target:gb2260gb2659match_demo_6});
				</script>
			</div>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.2.21版本开始支持。</p>
	<script>$js('#gb2260gb2659match_demo_html').text($js('#gb2260gb2659match_demo').outerHTML()).unindent({ignore:1});</script>



<!--
//                  #####   #####   #####    ###                        
//    ####  #####  #     # #     # #     #  #   #  #    # ###### #    # 
//   #    # #    #       #       # #       #     # ##   # #      #    # 
//   #      #####   #####   #####  ######  #     # # #  # #####  #    # 
//   #  ### #    # #       #       #     # #     # #  # # #      # ## # 
//   #    # #    # #       #       #     #  #   #  #   ## #      ##  ## 
//    ####  #####  ####### #######  #####    ###   #    # ###### #    # 
// 
-->
	<a name="gb2260new"></a>
	<h1>$js.gb2260new</h1>
	<h2>定义</h2>
	<p>$js.gb2260new(code) : String</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>code</td>
			<td>[必须]需要查找的GB2260代码。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>这个方法用于判断GB2260地区是否已撤销，如果已撤销则返回新的代码。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="gb2260new_demo_html"></pre>
	</fieldset>
	<h2>演示</h2>
	<fieldset>
		<legend>演示区域</legend>
			<div id="gb2260new_demo">
				<table border="1">
					<tr>
						<td></td>
						<td>110104</td>
						<td>110105</td>
					</tr>
					<tr>
						<td>原始地区名称</td>
						<td id="gb2260new_demo_a1"></td>
						<td id="gb2260new_demo_a2"></td>
					</tr>
					<tr>
						<td>查新地区名称</td>
						<td id="gb2260new_demo_b1"></td>
						<td id="gb2260new_demo_b2"></td>
					</tr>
				</table>
				<script>
					$js('#gb2260new_demo_a1').text($js.gb2260('110104'));
					$js('#gb2260new_demo_a2').text($js.gb2260('110105'));
					$js('#gb2260new_demo_b1').text($js.gb2260($js.gb2260new('110104')));
					$js('#gb2260new_demo_b2').text($js.gb2260($js.gb2260new('110105')));
				</script>
			</div>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.2.13版本开始支持。本方法需要jslib.gb.min.js文件支持。</p>
	<script>$js('#gb2260new_demo_html').text($js('#gb2260new_demo').outerHTML()).unindent({ignore:1});</script>



<!--
//                  #####   #####   #####    ###                                             #####  
//    ####  #####  #     # #     # #     #  #   #   ####  ###### #      ######  ####  ##### #     # 
//   #    # #    #       #       # #       #     # #      #      #      #      #    #   #         # 
//   #      #####   #####   #####  ######  #     #  ####  #####  #      #####  #        #    #####  
//   #  ### #    # #       #       #     # #     #      # #      #      #      #        #         # 
//   #    # #    # #       #       #     #  #   #  #    # #      #      #      #    #   #   #     # 
//    ####  #####  ####### #######  #####    ###    ####  ###### ###### ######  ####    #    #####  
//                                                                                                  
-->
	<a name="gb2260select3"></a>
	<h1>$js.gb2260select3</h1>
	<h2>定义</h2>
	<p>$js.gb2260select3(opts) : HtmlElement</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>opts.name</td>
			<td>[可选]节点名称。</td>
		</tr>
		<tr>
			<td>opts.value</td>
			<td>[可选]默认值。</td>
		</tr>
	</table>
	<h2>返回值</h2>
	<div>返回最后一个HtmlElement节点，其中自定义方法：
		<pre>{
	show:function(){},	//显示选择区域
	hide:function(){},	//隐藏显示区域
	setcode(code),	//设置地区代码
}</pre>
	</div>
	<h2>说明</h2>
	<p>这个方法用于三级地区选择。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="gb2260select3_demo_html"></pre>
	</fieldset>
	<h2>演示</h2>
	<fieldset>
		<legend>演示区域</legend>
		<div id="gb2260select3_demo">
			<table border="1">
				<tr>
					<td>默认130123</td>
					<td>
						<script>
							let gb2260select3_obj=$js.gb2260select3({value:'130123'});
						</script>
					</td>
				</tr>
			</table>
			<button onclick="gb2260select3_obj.setcode('110105');">设置为110105</button>
			<button onclick="gb2260select3_obj.setcode('140502');">设置为140502</button>
			<button onclick="gb2260select3_obj.setcode('123456');">设置为123456（这个是不存在的）</button>
		</div>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.2.8版本开始支持。本方法需要jslib.gb.min.js文件支持。</p>
	<p>本方法自0.2.13版本开始支持setcode方法。</p>
	<script>$js('#gb2260select3_demo_html').text($js('#gb2260select3_demo').outerHTML()).unindent({ignore:1});</script>


<!--
//                  #####   #####  #######  #####  
//    ####  #####  #     # #     # #       #     # 
//   #    # #    #       # #       #       #     # 
//   #      #####   #####  ######  ######   ###### 
//   #  ### #    # #       #     #       #       # 
//   #    # #    # #       #     # #     # #     # 
//    ####  #####  #######  #####   #####   #####  
//                                                 
-->
	<a name="gb2659"></a>
	<h1>$js.gb2659</h1>
	<h2>定义</h2>
	<p>$js.gb2659(code,opts) : String</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>code</td>
			<td>[可选]国家代码。</td>
		</tr>
	</table>
	<h2>返回值</h2>
	<div>返回指定国家代码对应国家的简称。</div>
	<h2>说明</h2>
	<p>这个方法用于使用国家代码获取国家名称信息。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="gb2659_demo_html"></pre>
	</fieldset>
	<h2>演示</h2>
	<fieldset>
		<legend>演示区域</legend>
			<div id="gb2659_demo">
				<table border="1">
					<tr>
						<td>CN</td>
						<td><script>document.write($js.gb2659('CN'));</script></td>
					</tr>
				</table>
			</div>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.2.8版本开始支持。本方法需要jslib.gb.min.js文件支持。</p>
	<script>$js('#gb2659_demo_html').text($js('#gb2659_demo').outerHTML()).unindent({ignore:1});</script>



<!--
//                  #####   #####  #######  #####                                           
//    ####  #####  #     # #     # #       #     #  ####  ###### #      ######  ####  ##### 
//   #    # #    #       # #       #       #     # #      #      #      #      #    #   #   
//   #      #####   #####  ######  ######   ######  ####  #####  #      #####  #        #   
//   #  ### #    # #       #     #       #       #      # #      #      #      #        #   
//   #    # #    # #       #     # #     # #     # #    # #      #      #      #    #   #   
//    ####  #####  #######  #####   #####   #####   ####  ###### ###### ######  ####    #   
//                                                                                          
-->
	<a name="gb2659select"></a>
	<h1>$js.gb2659select</h1>
	<h2>定义</h2>
	<p>$js.gb2659select(opts) : HtmlElement</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>opts.name</td>
			<td>[可选]节点名称。</td>
		</tr>
		<tr>
			<td>opts.value</td>
			<td>[可选]默认值。</td>
		</tr>
	</table>
	<h2>返回值</h2>
	<div>返回最后一个HtmlElement节点。</div>
	<h2>说明</h2>
	<p>这个方法用于国家选择。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="gb2659select_demo_html"></pre>
	</fieldset>
	<h2>演示</h2>
	<fieldset>
		<legend>演示区域</legend>
			<div id="gb2659select_demo">
				<table border="1">
					<tr>
						<td>国家选择</td>
						<td>
							<script>
								$js.gb2659select({value:'CN',
									onselected:function(v){$js.topmsg({msg:`onselected(${v})`})},
									onselected2:function(v){$js.topmsg({msg:`onselected2(${JSON.stringify(v)})`})},
									placeholder:'任意输入'});
							</script>
						</td>
					</tr>
				</table>
			</div>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.2.8版本开始支持。本方法需要jslib.gb.min.js文件支持。</p>
	<script>$js('#gb2659select_demo_html').text($js('#gb2659select_demo').outerHTML()).unindent({ignore:1});</script>


<!--
//                       
//    ####  ###### ##### 
//   #    # #        #   
//   #      #####    #   
//   #  ### #        #   
//   #    # #        #   
//    ####  ######   #   
//                       
-->
	<a name="get"></a>
	<h1>$js.get</h1>
	<h2>定义</h2>
	<p>$js.get(name,def,uri) : String</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>name</td>
			<td>[必须]名称。</td>
		</tr>
		<tr>
			<td>def</td>
			<td>[可选]未传递时返回的默认值。</td>
		</tr>
		<tr>
			<td>uri</td>
			<td>[可选]解析的路径，默认为当前页面URL。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>获取URL中传递的参数。</p>
	<p>例如当前URL为 https://shanmin.github.io/jslib/index.html?a=100&b=abc ，则$js.get('a')返回100。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre>console.log($js.get('test'));</pre>
		<pre></pre>
	</fieldset>
	<h2>版本</h2>
	<p>本属性自0.1.12版本开始支持。</p>



<!--
//                                  #####                                 
//   #    #   ##   #    # ###### # #     # #####  # #    # #   # # #    # 
//   #    #  #  #  ##   #     #  #       # #    # # ##   #  # #  # ##   # 
//   ###### #    # # #  #    #   #  #####  #    # # # #  #   #   # # #  # 
//   #    # ###### #  # #   #    # #       #####  # #  # #   #   # #  # # 
//   #    # #    # #   ##  #     # #       #      # #   ##   #   # #   ## 
//   #    # #    # #    # ###### # ####### #      # #    #   #   # #    # 
//                                                                        
-->
	<a name="hanzi2pinyin"></a>
	<h1>$js.hanzi2pinyin</h1>
	<h2>定义</h2>
	<p>$js.hanzi2pinyin(str,mode) : Array|String</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>str</td>
			<td>[必须]要转换的字符串。</td>
		</tr>
		<tr>
			<td>mode</td>
			<td>[可选]转换模式，0标准/1首字母/2无音调/10姓氏标准/11姓氏首字母/2姓氏无音调。默认：0。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>本方法是把指定字符串转换为拼音。返回值为每个汉字的拼音数组。</p>
	<p>mode=1时，返回值为字符串。</p>
	<p>mode=10时，读音优先姓氏读音。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="hanzi2pinyin_show"></pre>
	</fieldset>
	<h2>演示</h2>
	<fieldset>
		<legend>演示区域</legend>
		<div id="hanzi2pinyin_demo">
			<table border="1">
				<tr>
					<td>学习中文</td>
					<td id="hanzi2pinyin_demo_0"></td>
					<td id="hanzi2pinyin_demo_1"></td>
					<td id="hanzi2pinyin_demo_2"></td>
				</tr>
			</table>
			<script>
				$js('#hanzi2pinyin_demo_0').text(JSON.stringify($js.hanzi2pinyin('学习中文')));
				$js('#hanzi2pinyin_demo_1').text($js.hanzi2pinyin('学习中文',1));
				$js('#hanzi2pinyin_demo_2').text(JSON.stringify($js.hanzi2pinyin('学习中文',2)));
			</script>
			普通模式转换“单双”：<script>document.write($js.hanzi2pinyin('单双'));</script><br>
			姓氏模式转换“单双”：<script>document.write($js.hanzi2pinyin('单双',10));</script>
		</div>
	</fieldset>
	<h2>关联</h2>
	<p>
		<a href="api.html#$js.pinyin2shengdiao">$js.pinyin2shengdiao</a> &nbsp;
	</p>
	<h2>版本</h2>
	<p>本属性自0.1.16版本开始支持。需注意，本方法需要jslib.zh.min.js文件。</p>
	<p>本属性自0.2.7版本开始支持mode=10参数。</p>
	<p>本属性自0.2.9版本开始支持mode=11/12参数。</p>
	<script>$js('#hanzi2pinyin_show').text($js('#hanzi2pinyin_demo').outerHTML()).unindent({ignore:1});</script>



<!--
//                         #####                              
//   #    #   ##    ####  #     # #        ##    ####   ####  
//   #    #  #  #  #      #       #       #  #  #      #      
//   ###### #    #  ####  #       #      #    #  ####   ####  
//   #    # ######      # #       #      ######      #      # 
//   #    # #    # #    # #     # #      #    # #    # #    # 
//   #    # #    #  ####   #####  ###### #    #  ####   ####  
//                                                            
-->
	<a name="hasClass"></a>
	<h1>$js().hasClass</h1>
	<h2>定义</h2>
	<p>$js().hasClass(classname) : Boolean</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>classname</td>
			<td>[必须]指定的CSS类名。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>判断当前匹配节点中是否存在指定的CSS类。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre>&lt;div id="a1">
	&lt;div id="a2" class="css1">a2 text&lt;/div>
	&lt;div id="a3" class="css2">a3 text&lt;/div>
&lt;/div></pre>
	</fieldset>
	<fieldset>
		<legend>JavaScript</legend>
		<pre>$js('#a2').hasClass('css1');	//返回true
$js('#a2').hasClass('css1');	//返回false</pre>
	</fieldset>
	<h2>关联</h2>
	<p>
		<a href="api.html#addClass">addClass</a> &nbsp;
		<a href="api.html#removeClass">removeClass</a> &nbsp;
	</p>
	<h2>版本</h2>
	<p>本方法自0.2.10版本开始支持。</p>


<!--
//                                   #####                                                            
//   #####  # #    # #   # # #    # #     #  ####  #    # ###### #    #  ####  #####  #   ##    ####  
//   #    # # ##   #  # #  # ##   #       # #      #    # #      ##   # #    # #    # #  #  #  #    # 
//   #    # # # #  #   #   # # #  #  #####   ####  ###### #####  # #  # #      #    # # #    # #    # 
//   #####  # #  # #   #   # #  # # #            # #    # #      #  # # #  ### #    # # ###### #    # 
//   #      # #   ##   #   # #   ## #       #    # #    # #      #   ## #    # #    # # #    # #    # 
//   #      # #    #   #   # #    # #######  ####  #    # ###### #    #  ####  #####  # #    #  ####  
//                                                                                                    
-->
	<a name="pinyin2shengdiao"></a>
	<h1>$js.pinyin2shengdiao</h1>
	<h2>定义</h2>
	<p>$js.pinyin2shengdiao(str) : String</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>str</td>
			<td>[必须]要转换的字符串。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>本方法是把指定字符串中标的声调转换为声调符号。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="pinyin2shengdiao_show"></pre>
	</fieldset>
	<h2>演示</h2>
	<fieldset>
		<legend>演示区域</legend>
		<div id="pinyin2shengdiao_demo">
			<table border="1">
				<tr>
					<td>中国</td>
					<td>zhong1 guo1</td>
					<td><script>document.write($js.pinyin2shengdiao('zhong1 guo2'))</script></td>
				</tr>
			</table>
		</div>
	</fieldset>
	<h2>关联</h2>
	<p>
		<a href="api.html#$js.hanzi2pinyin">$js.hanzi2pinyin</a> &nbsp;
	</p>
	<h2>版本</h2>
	<p>本属性自0.2.9版本开始支持。需注意，本方法需要jslib.zh.min.js文件。</p>
	<script>$js('#pinyin2shengdiao_show').text($js('#pinyin2shengdiao_demo').outerHTML()).unindent({ignore:1});</script>


<!--
//                          
//   #    # # #####  ###### 
//   #    # # #    # #      
//   ###### # #    # #####  
//   #    # # #    # #      
//   #    # # #    # #      
//   #    # # #####  ###### 
//                          
-->
	<a name="hide"></a>
	<h1>$js().hide</h1>
	<h2>定义</h2>
	<p>$js().hide() : JSLib</p>
	<h2>说明</h2>
	<p>隐藏当前元素。</p>
	<h2>关联</h2>
	<p>
		<a href="api.html#show">show</a> &nbsp;
	</p>
	<h2>版本</h2>
	<p>本属性自0.1.14版本开始支持。</p>



<!--
//                              
//   #    # ##### #    # #      
//   #    #   #   ##  ## #      
//   ######   #   # ## # #      
//   #    #   #   #    # #      
//   #    #   #   #    # #      
//   #    #   #   #    # ###### 
//                              
-->
	<a name="html"></a>
	<h1>$js().html</h1>
	<h2>定义</h2>
	<p>$js().html() : String</p>
	<p>$js().html(HtmlString) : JSLib</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>HtmlString</td>
			<td>[可选]指定的HTML字符串。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>当未传递HtmlString时，将返回第一个匹配节点的HTML文本。</p>
	<p>当传递HtmlString时，会使用这个HtmlString字符串内容填充所有匹配的节点。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre>&lt;div id="a1">
	&lt;div id="a2">a2 text&lt;/div>
	&lt;div id="a3">a3 text&lt;/div>
&lt;/div></pre>
	</fieldset>
	<fieldset>
		<legend>JavaScript</legend>
		<pre>console.log($js('#a1').html());</pre>
	</fieldset>
	<fieldset>
		<legend>输出示例</legend>
		<pre>&lt;div id="a2">a2 text&lt;/div>
&lt;div id="a3">a3 text&lt;/div></pre>
	</fieldset>
	<fieldset>
		<legend>JavaScript</legend>
		<pre>$js('#a1').html('&lt;div>abc&lt;/div>');</pre>
	</fieldset>
	<fieldset>
		<legend>执行后原HTML信息变为</legend>
		<pre>&lt;div id="a1">
	&lt;div>abc&lt;/div>
&lt;/div></pre>
	</fieldset>
	<h2>关联</h2>
	<p>
		<a href="api.html#text">text</a> &nbsp;
		<a href="api.html#outerHTML">outerHTML</a> &nbsp;
	</p>
	<h2>版本</h2>
	<p>本方法自0.0.0版本开始支持。</p>



	<a name="int"></a>
	<h1>$js().int</h1>
	<h2>定义</h2>
	<p>$js().int() : Number</p>
	<p>$js().int(num,opts) : JSLib</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>num</td>
			<td>[可选]需设置的值。</td>
		</tr>
		<tr>
			<td>opts</td>
			<td>[可选]附加选项。</td>
		</tr>
		<tr>
			<td>opts.zero2empty=false|true</td>
			<td>[可选]num=0时，显示为空字符串。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>注：如果JSLib匹配列表中包含checkbox/radio元素时，只有在选中状态才会返回有效数值。</p>
	<p>传递num参数时，设置指定数字到当前符合元素上。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="int_demo_html"></pre>
	</fieldset>
	<h2>演示</h2>
	<fieldset>
		<legend>演示区域</legend>
		<form id="int_demo">
			<input type="text" name="int_demo_input1" value="12a3">
			<label><input type="checkbox" name="int_demo_input2" value="234">checkbox</label>
			<input type="button" value="TEST" onclick="$js('#int_demo_result').html('input1='+$js('@int_demo_input1').float()+'<br>input2='+$js('@int_demo_input2').float());">
		</form>
		<fieldset>
			<legend>运行结果</legend>
			<div id="int_demo_result"></div>
		</fieldset>
	</fieldset>
	<h2>关联</h2>
	<p>
		<a href="api.html#float">float</a> &nbsp;
		<a href="api.html#val">val</a> &nbsp;
	</p>
	<h2>版本</h2>
	<p>本属性自0.2.25版本开始支持。</p>
	<script>$js('#int_demo_html').text($js('#int_demo').outerHTML()).unindent({ignore:1});</script>


<!--
//   ###                                                                              ######                                         
//    #  #    # ##### ###### #####  #####   ####  #        ##   ##### #  ####  #    # #     # # #      # #    # ######   ##   #####  
//    #  ##   #   #   #      #    # #    # #    # #       #  #    #   # #    # ##   # #     # # #      # ##   # #       #  #  #    # 
//    #  # #  #   #   #####  #    # #    # #    # #      #    #   #   # #    # # #  # ######  # #      # # #  # #####  #    # #    # 
//    #  #  # #   #   #      #####  #####  #    # #      ######   #   # #    # #  # # #     # # #      # #  # # #      ###### #####  
//    #  #   ##   #   #      #   #  #      #    # #      #    #   #   # #    # #   ## #     # # #      # #   ## #      #    # #   #  
//   ### #    #   #   ###### #    # #       ####  ###### #    #   #   #  ####  #    # ######  # ###### # #    # ###### #    # #    # 
//                                                                                                                                   
-->
	<a name="InterpolationBilinear"></a>
	<h1>$js.InterpolationBilinear</h1>
	<h2>定义</h2>
	<p>$js.InterpolationBilinear(x,y,x1,x1y1,x1y2,x2,x2y1,x2y2,y1,y2) : Number</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>x</td>
			<td>[必须]需要计算的位置X。</td>
		</tr>
		<tr>
			<td>y</td>
			<td>[必须]需要计算的位置Y。</td>
		</tr>
		<tr>
			<td>x1</td>
			<td>[必须]第一组已知量的坐标X。</td>
		</tr>
		<tr>
			<td>x1y1</td>
			<td>[必须]第一组第一个已知量。</td>
		</tr>
		<tr>
			<td>x1y2</td>
			<td>[必须]第二组第一个已知量。</td>
		</tr>
		<tr>
			<td>x2</td>
			<td>[必须]第二组已知量的坐标X。</td>
		</tr>
		<tr>
			<td>x2y1</td>
			<td>[必须]第二组第一个已知量。</td>
		</tr>
		<tr>
			<td>x2y2</td>
			<td>[必须]第一组第二个已知量。</td>
		</tr>
		<tr>
			<td>y1</td>
			<td>[必须]第一组已知量的坐标Y。</td>
		</tr>
		<tr>
			<td>y2</td>
			<td>[必须]第二组已知量的坐标Y。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>本方法按照双线性插值规则，返回插值后的数值。</p>
	<pre>
	|
	|  *(x1,y1)    *(x2,y1)
	|
	|        v(x,y)
	|
	|  *(x1,y2)    *(x2,y2)
	|
	+-------------------------
	</pre>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="InterpolationBilinear_html"></pre>
		<pre id="InterpolationBilinear_src"></pre>
	</fieldset>
	<fieldset>
		<legend>输出示例 56.4</legend>
		<pre id="InterpolationBilinear_result"></pre>
	</fieldset>
	<script id="InterpolationBilinear_js">
		// console.log($js.InterpolationLinear(1.1,1.0,55.2,1.5,52.2));
		// console.log($js.InterpolationLinear(1.1,1.0,57.5,1.5,54.4));
		let InterpolationBilinear_ret=$js.InterpolationBilinear(1.1,48.7,1.0,55.2,57.5,1.5,52.2,54.4,48,49);
		$js('#InterpolationBilinear_result').html(InterpolationBilinear_ret);
	</script>
	<h2>关联</h2>
	<p>
		<a href="api.html#InterpolationLinear">InterpolationLinear</a> &nbsp;
	</p>
	<h2>版本</h2>
	<p>本方法自0.1.34版本开始支持。</p>
	<script>$js('#InterpolationBilinear_html').text($js('#InterpolationBilinear_result').outerHTML()).unindent({ignore:1});</script>
	<script>$js('#InterpolationBilinear_src').text($js('#InterpolationBilinear_js').outerHTML()).unindent({ignore:1});</script>



<!--
//   ###                                                                              ######                                          #####  
//    #  #    # ##### ###### #####  #####   ####  #        ##   ##### #  ####  #    # #     # # #      # #    # ######   ##   #####  #     # 
//    #  ##   #   #   #      #    # #    # #    # #       #  #    #   # #    # ##   # #     # # #      # ##   # #       #  #  #    #       # 
//    #  # #  #   #   #####  #    # #    # #    # #      #    #   #   # #    # # #  # ######  # #      # # #  # #####  #    # #    #  #####  
//    #  #  # #   #   #      #####  #####  #    # #      ######   #   # #    # #  # # #     # # #      # #  # # #      ###### #####  #       
//    #  #   ##   #   #      #   #  #      #    # #      #    #   #   # #    # #   ## #     # # #      # #   ## #      #    # #   #  #       
//   ### #    #   #   ###### #    # #       ####  ###### #    #   #   #  ####  #    # ######  # ###### # #    # ###### #    # #    # ####### 
//                                                                                                                                           
-->
	<a name="InterpolationBilinear2"></a>
	<h1>$js.InterpolationBilinear2</h1>
	<h2>定义</h2>
	<p>$js.InterpolationBilinear2(x,y,t) : Number</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>x</td>
			<td>[必须]需要计算的位置X。</td>
		</tr>
		<tr>
			<td>y</td>
			<td>[必须]需要计算的位置Y。</td>
		</tr>
		<tr>
			<td>t</td>
			<td>[必须]数据集，具体数据格式请参见示例。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>本方法按照双线性插值规则，返回插值后的数值。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="InterpolationBilinear2_html"></pre>
		<pre id="InterpolationBilinear2_src"></pre>
	</fieldset>
	<fieldset>
		<legend>输出示例 56.4</legend>
		<pre id="InterpolationBilinear2_result"></pre>
	</fieldset>
	<script id="InterpolationBilinear2_js">
		let InterpolationBilinear2_data={
			x:[0.0,0.5,1.0,1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0],
			y:[20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,60],
			data:[
				[10.3,10.1,NaN ,NaN ,NaN ,NaN ,NaN ,NaN ,NaN ,NaN ,NaN ,NaN ,NaN ],
				[11.4,11.2,10.8,10.5,10.0,NaN ,NaN ,NaN ,NaN ,NaN ,NaN ,NaN ,NaN ],
				[12.5,12.2,11.9,11.5,11.0,10.6,10.2,NaN ,NaN ,NaN ,NaN ,NaN ,NaN ],
				[13.7,13.4,13.0,12.6,12.1,11.6,11.2,10.8,10.5,10.1,NaN ,NaN ,NaN ],
				[14.9,14.6,14.2,13.7,13.1,12.7,12.2,11.8,11.5,11.0,10.7,10.4,10.1],
				[16.2,15.9,15.4,14.9,14.3,13.8,13.3,12.8,12.5,12.0,11.7,11.3,10.9],
				[17.5,17.2,16.6,16.1,15.4,14.9,14.4,13.8,13.5,13.0,12.6,12.2,11.6],
				[18.9,18.5,18.0,17.4,16.6,16.1,15.5,14.8,14.6,14.0,13.6,13.1,12.4],
				[20.3,19.7,19.2,18.4,17.6,17.0,16.5,15.8,15.4,14.8,14.4,13.9,13.2],
				[21.8,21.1,20.5,19.6,18.7,18.1,17.5,16.8,16.4,15.8,15.4,14.6,13.9],
				[23.3,22.6,21.9,21.0,20.0,19.3,18.6,17.9,17.4,16.8,16.4,15.4,14.7],
				[24.9,24.2,23.4,22.4,21.4,20.7,19.9,19.2,18.4,17.9,17.4,16.4,15.5],
				[26.5,25.7,24.9,23.9,22.8,22.0,21.2,20.4,19.6,19.1,18.4,17.5,16.4],
				[28.2,27.4,26.5,25.4,24.3,23.4,22.6,21.7,20.9,20.3,19.4,18.5,17.4],
				[30.0,29.1,28.0,26.8,25.6,24.6,23.7,23.0,22.1,21.3,20.4,19.5,18.3],
				[31.8,30.8,29.6,28.0,26.7,25.8,24.8,24.0,23.2,22.3,21.4,20.4,19.2],
				[33.6,32.6,31.2,29.6,28.2,27.2,26.2,25.2,24.5,23.5,22.4,21.4,20.2],
				[35.5,34.4,33.0,31.2,29.8,28.8,27.7,26.6,25.9,24.8,23.4,22.4,21.3],
				[37.5,36.4,34.9,33.0,31.5,30.3,29.2,28.1,27.4,26.2,24.8,23.6,22.5],
				[39.5,38.2,36.7,34.7,33.0,31.8,30.6,29.6,28.8,27.4,26.0,24.8,23.7],
				[41.6,39.9,38.3,36.2,34.5,33.3,31.7,30.8,30.0,28.4,27.0,25.8,25.0],
				[43.7,42.0,40.2,38.0,36.0,34.8,33.2,32.3,31.5,29.7,28.4,27.1,26.2],
				[45.9,44.1,42.2,39.9,37.6,36.3,34.9,34.0,33.0,31.2,29.8,28.5,27.5],
				[48.1,46.2,44.2,41.8,39.4,38.0,36.6,35.6,34.6,32.7,31.3,29.8,28.9],
				[50.4,48.4,46.4,43.8,41.3,39.8,38.3,37.3,36.3,34.3,32.8,31.2,30.2],
				[52.7,50.6,48.5,45.8,43.2,41.6,40.1,39.0,37.9,35.8,34.3,32.7,31.6],
				[55.0,52.8,50.6,47.9,45.2,43.5,41.9,40.8,39.7,37.5,35.8,34.2,33.1],
				[57.5,55.2,52.9,50.0,47.2,45.2,43.7,42.6,41.4,39.1,37.4,35.6,34.5],
				[60.0,57.6,55.2,52.2,49.2,47.4,45.6,44.4,43.2,40.8,39.0,37.2,36.0],
				[NaN ,60.0,57.5,54.4,51.3,49.4,47.5,46.2,45.0,42.5,40.6,38.8,37.5],
				[NaN ,NaN ,59.9,56.7,53.4,51.4,49.5,48.2,46.9,44.3,42.3,40.4,39.1],
				[NaN ,NaN ,NaN ,59.0,55.6,53.5,51.5,50.1,48.8,46.1,44.1,42.0,40.7],
				[NaN ,NaN ,NaN ,NaN ,57.8,55.7,53.6,52.1,50.7,47.9,45.8,43.7,42.3],
				[NaN ,NaN ,NaN ,NaN ,60.0,57.8,55.6,54.2,52.7,49.8,47.6,45.4,43.9],
				[NaN ,NaN ,NaN ,NaN ,NaN ,60.0,57.8,56.3,54.7,51.7,49.4,47.1,45.6],
				[NaN ,NaN ,NaN ,NaN ,NaN ,NaN ,59.9,58.4,56.8,53.6,51.3,48.9,47.3],
				[NaN ,NaN ,NaN ,NaN ,NaN ,NaN ,NaN ,NaN ,NaN ,NaN ,NaN ,58.3,56.4],
			]
		};
		let InterpolationBilinear2_ret=$js.InterpolationBilinear2(1.1,48.7,InterpolationBilinear2_data);
		$js('#InterpolationBilinear2_result').html(InterpolationBilinear2_ret);
	</script>
	<h2>关联</h2>
	<p>
		<a href="api.html#InterpolationLinear">InterpolationLinear</a> &nbsp;
	</p>
	<h2>版本</h2>
	<p>本方法自0.1.34版本开始支持。</p>
	<script>$js('#InterpolationBilinear2_html').text($js('#InterpolationBilinear2_result').outerHTML()).unindent({ignore:1});</script>
	<script>$js('#InterpolationBilinear2_src').text($js('#InterpolationBilinear2_js').outerHTML()).unindent({ignore:1});</script>


<!--
//   ###                                                                              #                                     
//    #  #    # ##### ###### #####  #####   ####  #        ##   ##### #  ####  #    # #       # #    # ######   ##   #####  
//    #  ##   #   #   #      #    # #    # #    # #       #  #    #   # #    # ##   # #       # ##   # #       #  #  #    # 
//    #  # #  #   #   #####  #    # #    # #    # #      #    #   #   # #    # # #  # #       # # #  # #####  #    # #    # 
//    #  #  # #   #   #      #####  #####  #    # #      ######   #   # #    # #  # # #       # #  # # #      ###### #####  
//    #  #   ##   #   #      #   #  #      #    # #      #    #   #   # #    # #   ## #       # #   ## #      #    # #   #  
//   ### #    #   #   ###### #    # #       ####  ###### #    #   #   #  ####  #    # ####### # #    # ###### #    # #    # 
//
-->
	<a name="InterpolationLinear"></a>
	<h1>$js.InterpolationLinear</h1>
	<h2>定义</h2>
	<p>$js.InterpolationLinear(x,x1,xv1,x2,xv2) : Number</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>x</td>
			<td>[必须]需要计算的位置。</td>
		</tr>
		<tr>
			<td>x1</td>
			<td>[必须]第一个已知量的坐标X。</td>
		</tr>
		<tr>
			<td>xv1</td>
			<td>[必须]第一个已知量的坐标X对应的值。</td>
		</tr>
		<tr>
			<td>x2</td>
			<td>[必须]第二个已知量的坐标X。</td>
		</tr>
		<tr>
			<td>xv2</td>
			<td>[必须]第二个已知量的坐标X对应的值。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>本方法按照线性插值规则，返回插值后的数值。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="InterpolationLinear_html"></pre>
		<pre id="InterpolationLinear_src"></pre>
	</fieldset>
	<fieldset>
		<legend>输出示例</legend>
		<pre id="InterpolationLinear_result"></pre>
	</fieldset>
	<script id="InterpolationLinear_js">
		let InterpolationLinear_ret=$js.InterpolationLinear(22,20,-6,30,-5);
		$js('#InterpolationLinear_result').html(InterpolationLinear_ret);
	</script>
	<h2>关联</h2>
	<p>
		<a href="api.html#InterpolationBilinear">InterpolationBilinear</a> &nbsp;
	</p>
	<h2>版本</h2>
	<p>本方法自0.1.34版本开始支持。</p>
	<script>$js('#InterpolationLinear_html').text($js('#InterpolationLinear_result').outerHTML()).unindent({ignore:1});</script>
	<script>$js('#InterpolationLinear_src').text($js('#InterpolationLinear_js').outerHTML()).unindent({ignore:1});</script>



<!--
//   ###                                                                              #                                      #####  
//    #  #    # ##### ###### #####  #####   ####  #        ##   ##### #  ####  #    # #       # #    # ######   ##   #####  #     # 
//    #  ##   #   #   #      #    # #    # #    # #       #  #    #   # #    # ##   # #       # ##   # #       #  #  #    #       # 
//    #  # #  #   #   #####  #    # #    # #    # #      #    #   #   # #    # # #  # #       # # #  # #####  #    # #    #  #####  
//    #  #  # #   #   #      #####  #####  #    # #      ######   #   # #    # #  # # #       # #  # # #      ###### #####  #       
//    #  #   ##   #   #      #   #  #      #    # #      #    #   #   # #    # #   ## #       # #   ## #      #    # #   #  #       
//   ### #    #   #   ###### #    # #       ####  ###### #    #   #   #  ####  #    # ####### # #    # ###### #    # #    # ####### 
//                                                                                                                                  
-->
	<a name="InterpolationLinear2"></a>
	<h1>$js.InterpolationLinear2</h1>
	<h2>定义</h2>
	<p>$js.InterpolationLinear2(x,t) : Number</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>x</td>
			<td>[必须]需要计算的位置。</td>
		</tr>
		<tr>
			<td>t</td>
			<td>[必须]数据集，具体数据格式请参见示例。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>本方法按照线性插值规则，返回插值后的数值。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="InterpolationLinear2_html"></pre>
		<pre id="InterpolationLinear2_src"></pre>
	</fieldset>
	<fieldset>
		<legend>输出示例</legend>
		<pre id="InterpolationLinear2_result"></pre>
	</fieldset>
	<script id="InterpolationLinear2_js">
		let InterpolationLinear2t={'5.0':0.9999919,
			'6.0':0.9999681,'7.0':0.9999295,'8.0':0.9998762,'9.0':0.9998088,'10.0':0.9997277,
			'11.0':0.9996328,'12.0':0.9995247,'13.0':0.9994040,'14.0':0.9992712,'15.0':0.9991265,
			'16.0':0.9989701,'17.0':0.9988022,'18.0':0.9986232,'19.0':0.9984331,'20.0':0.9982323,
			'21.0':0.9980210,'22.0':0.9977993,'23.0':0.9975674,'24.0':0.9973256,'25.0':0.9970739,
			'26.0':0.9968128,'27.0':0.9965241,'28.0':0.9962623,'29.0':0.9959735,'30.0':0.9956756,
			'31.0':0.9953692,'32.0':0.9950542,'33.0':0.9947308,'34.0':0.9943991,'35.0':0.9940594
		};
		let InterpolationLinear2_ret=$js.InterpolationLinear2(22.5,InterpolationLinear2t);
		$js('#InterpolationLinear2_result').html(InterpolationLinear2_ret);
	</script>
	<h2>关联</h2>
	<p>
		<a href="api.html#InterpolationBilinear">InterpolationBilinear</a> &nbsp;
	</p>
	<h2>版本</h2>
	<p>本方法自0.1.34版本开始支持。</p>
	<script>$js('#InterpolationLinear2_html').text($js('#InterpolationLinear2_result').outerHTML()).unindent({ignore:1});</script>
	<script>$js('#InterpolationLinear2_src').text($js('#InterpolationLinear2_js').outerHTML()).unindent({ignore:1});</script>



<!--
//               #                                                    ######                      
//   #  ####    # #   #####   ####   ####  #      #    # ##### ###### #     #   ##   ##### #    # 
//   # #       #   #  #    # #      #    # #      #    #   #   #      #     #  #  #    #   #    # 
//   #  ####  #     # #####   ####  #    # #      #    #   #   #####  ######  #    #   #   ###### 
//   #      # ####### #    #      # #    # #      #    #   #   #      #       ######   #   #    # 
//   # #    # #     # #    # #    # #    # #      #    #   #   #      #       #    #   #   #    # 
//   #  ####  #     # #####   ####   ####  ######  ####    #   ###### #       #    #   #   #    # 
//                                                                                                
-->
	<a name="isAbsolutePath"></a>
	<h1>$js.isAbsolutePath</h1>
	<h2>定义</h2>
	<p>$js.isAbsolutePath(String) : Boolean</p>
	<h2>说明</h2>
	<p>判断指定路径是否为绝对路径。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="isAbsolutePath_show_html"></pre>
	</fieldset>
	<h2>演示</h2>
	<fieldset>
		<legend>JavaScript</legend>
		<div id="isAbsolutePath_demo_html">
			<script>
				console.log($js.isAbsolutePath('abc.png'));
				console.log($js.isAbsolutePath('abc/abc.png'));
				console.log($js.isAbsolutePath('/abc/abc.png'));
				console.log($js.isAbsolutePath('http://abc/abc.png'));
				console.log($js.isAbsolutePath('https://abc/abc.png'));
			</script>
		</div>
	</fieldset>
	<fieldset>
		<legend>输出示例</legend>
		<pre>false
false
true
true
true</pre>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.1.9版本开始支持。</p>
	<script>$js('#isAbsolutePath_show_html').text($js('#isAbsolutePath_demo_html').outerHTML()).unindent({ignore:1});</script>



	<a name="isMobile"></a>
	<h1>$js.isMobile</h1>
	<h2>定义</h2>
	<p>$js.isMobile() : Boolean</p>
	<h2>说明</h2>
	<p>返回当前浏览设备是否为移动设备。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="isMobile_show_html"></pre>
	</fieldset>
	<h2>演示</h2>
	<fieldset>
		<legend>JavaScript</legend>
		<div id="isMobile_demo_html">
			<input type="button" value="调用测试" onclick="$js('#isMobile_show_result').text($js.isMobile()?'true':'false')">
		</div>
	</fieldset>
	<fieldset>
		<legend>输出示例</legend>
		<pre id="isMobile_show_result"></pre>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.1.10版本开始支持。</p>
	<script>$js('#isMobile_show_html').text($js('#isMobile_demo_html').outerHTML()).unindent({ignore:1});</script>




<!--
//                              
//   #        ##    ####  ##### 
//   #       #  #  #        #   
//   #      #    #  ####    #   
//   #      ######      #   #   
//   #      #    # #    #   #   
//   ###### #    #  ####    #   
//                              
-->
	<a name="last"></a>
	<h1>$js().last</h1>
	<h2>定义</h2>
	<p>$js().last() : JSLib</p>
	<h2>说明</h2>
	<p>返回当前对象中最后一个节点。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre>&lt;div id="a1">a1 text&lt;/div>
&lt;div id="a2">a2 text&lt;/div>
&lt;div id="a3">a3 text&lt;/div></pre>
	</fieldset>
	<fieldset>
		<legend>JavaScript</legend>
		<pre>console.log($js('div').last().html());</pre>
	</fieldset>
	<fieldset>
		<legend>输出示例</legend>
		<pre>&lt;div id="a3">a3 text&lt;/div></pre>
	</fieldset>
	<h2>关联</h2>
	<p><a href="api.html#first">first</a><br></p>
	<h2>版本</h2>
	<p>本方法自0.0.0版本开始支持。</p>



<!--
//                                             
//   #       ####    ##   #####       #  ####  
//   #      #    #  #  #  #    #      # #      
//   #      #    # #    # #    #      #  ####  
//   #      #    # ###### #    #      #      # 
//   #      #    # #    # #    # #    # #    # 
//   ######  ####  #    # #####   ####   ####  
//                                             
-->
	<a name="loadjs"></a>
	<h1>$js.loadjs</h1>
	<h2>定义</h2>
	<p>$js.loadjs(URL) : Boolean</p>
	<h2>说明</h2>
	<p>同步加载指定js文件。如果加载成功，则返回true。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>JavaScript</legend>
		<pre>$js.loadjs('test.js');</pre>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.0.2版本开始支持。</p>



<!--
//                                  #####                                           
//   #    # ###### #####  #   ##   #     #   ##   #####  ##### #    # #####  ###### 
//   ##  ## #      #    # #  #  #  #        #  #  #    #   #   #    # #    # #      
//   # ## # #####  #    # # #    # #       #    # #    #   #   #    # #    # #####  
//   #    # #      #    # # ###### #       ###### #####    #   #    # #####  #      
//   #    # #      #    # # #    # #     # #    # #        #   #    # #   #  #      
//   #    # ###### #####  # #    #  #####  #    # #        #    ####  #    # ###### 
//                                                                                  
-->
	<a name="mediaCapture"></a>
	<h1>$js.mediaCapture</h1>
	<h2>定义</h2>
	<p>$js.mediaCapture(opts) : HtmlElement</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>opts.mode=image|video</td>
			<td>[可选]捕捉类型。默认值：image。</td>
		</tr>
		<tr>
			<td>opts.ondata=function(data){}</td>
			<td>[可选]接收捕捉的图片或视频数据。这个data数据是Blob对象。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>启用媒体捕捉图片或视频。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>JavaScript</legend>
		<pre>$js.mediaCapture({mode:'image'});</pre>
		<button onclick="mediaCapture_btn1()">开始捕捉图片</button>
		<button onclick="mediaCapture_btn2()">开始捕捉视频</button>
		<script>
			function mediaCapture_btn1()
			{
				$js.mediaCapture({mode:'image'});
			}
			function mediaCapture_btn2()
			{
				$js.mediaCapture({mode:'video'});
			}
		</script>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.2.18版本开始支持。</p>



	<a name="max"></a>
	<h1>$js.max</h1>
	<h2>定义</h2>
	<p>$js.max(arr) : Number</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>arr</td>
			<td>[必须]包含需要统计的数值数组。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>返回数组中的最大数值。本方法会自动去除非数字的数据。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>JavaScript</legend>
		<pre id="max_src"></pre>
	</fieldset>
	<fieldset>
		<legend>输出结果</legend>
		<div id="max_result"></div>
	</fieldset>
	<script id="max_js">
		let max_arr=[123,234,'a',NaN,345];
		let max_result=$js.max(max_arr);
		$js('#max_result').text(max_result);
	</script>
	<h2>版本</h2>
	<p>本方法自1.0.2版本开始支持。</p>
	<script>$js('#max_src').text($js('#max_js').outerHTML()).unindent({ignore:1});</script>


<!--
//                   
//   #    # # #    # 
//   ##  ## # ##   # 
//   # ## # # # #  # 
//   #    # # #  # # 
//   #    # # #   ## 
//   #    # # #    # 
//                   
-->
	<a name="min"></a>
	<h1>$js.min</h1>
	<h2>定义</h2>
	<p>$js.min(arr) : Number</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>arr</td>
			<td>[必须]包含需要统计的数值数组。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>返回数组中的最小数值。本方法会自动去除非数字的数据。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>JavaScript</legend>
		<pre id="min_src"></pre>
	</fieldset>
	<fieldset>
		<legend>输出结果</legend>
		<div id="min_result"></div>
	</fieldset>
	<script id="min_js">
		let min_arr=[123,234,'a',NaN,345];
		let min_result=$js.min(min_arr);
		$js('#min_result').text(min_result);
	</script>
	<h2>版本</h2>
	<p>本方法自0.1.34版本开始支持。</p>
	<script>$js('#min_src').text($js('#min_js').outerHTML()).unindent({ignore:1});</script>




<!--
//                                             
//   #    #  ####   ####  #####   ####  #    # 
//   ##  ## #      #    # #    # #    #  #  #  
//   # ## #  ####  #      #####  #    #   ##   
//   #    #      # #  ### #    # #    #   ##   
//   #    # #    # #    # #    # #    #  #  #  
//   #    #  ####   ####  #####   ####  #    # 
//                                             
-->
	<a name="msgbox"></a>
	<h1>$js.msgbox</h1>
	<h2>定义</h2>
	<p>$js.msgbox(String) : object</p>
	<p>$js.msgbox(opts) : object</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>String</td>
			<td>[必须]显示的文本。</td>
		</tr>
		<tr>
			<td>opts</td>
			<td>[必须]通过对象传递的参数。</td>
		</tr>
		<tr>
			<td>opts.msg</td>
			<td>[必须]显示的HTML内容。</td>
		</tr>
		<tr>
			<td>opts.clickclose</td>
			<td>[可选]是否点击自动关闭，默认：true。</td>
		</tr>
		<tr>
			<td>opts.timeout</td>
			<td>[可选]指显示超时时间，如果>0则表示timeout之后自动关闭。单位：ms。</td>
		</tr>
		<tr>
			<td>opts.onclose</td>
			<td>[可选]当点击关闭时的回调函数。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>显示一个全屏的模式提示信息。</p>
	<p>$js.msgbox(String)方式相当于$js.msgbox({msg:String})</p>
	<p>本方法成功执行后返回$msgbox对象。$msgbox对象结构如下：</p>
	<pre>
	{
		add(html),		//增加附加显示文字
		clickclose=true|false,	//是否点击关窗
		el,			//显示节点变量
		clear(),		//清除所有显示文本
		close(),		//关闭msgbox的方法
		show(html),		//设置显示msgbox的内容
	}
	</pre>
	<h2>示例</h2>
	<fieldset>
		<legend>JavaScript</legend>
		<pre id="msgbox_show_html"></pre>
	</fieldset>
	<h2>演示</h2>
	<fieldset>
		<legend>演示区域</legend>
		<div id="msgbox_demo_html">
			<input type="button" value="msgbox test 1" onclick="$js.msgbox('msgbox 1')">
			<input type="button" value="msgbox test 2" onclick="$js.msgbox({msg:'msgbox 2'})">
			<input type="button" value="msgbox test 3" onclick="$js.msgbox({msg:'msgbox 3',timeout:5000})">
			<input type="button" value="msgbox test 4" onclick="$js.msgbox({msg:'msgbox 4',clickclose:false,timeout:5000})">
		</div>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.1.4版本开始支持。</p>
	<script>$js('#msgbox_show_html').text($js('#msgbox_demo_html').outerHTML()).unindent({ignore:1});</script>



<!--
//                                #####                        
//   #    #   ##   #    # ###### #     # #####  #      # ##### 
//   ##   #  #  #  ##  ## #      #       #    # #      #   #   
//   # #  # #    # # ## # #####   #####  #    # #      #   #   
//   #  # # ###### #    # #            # #####  #      #   #   
//   #   ## #    # #    # #      #     # #      #      #   #   
//   #    # #    # #    # ######  #####  #      ###### #   #   
//                                                             
-->
	<a name="nameSplit"></a>
	<h1>$js.nameSplit</h1>
	<h2>定义</h2>
	<p>$js.nameSplit(String) : object</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>String</td>
			<td>[必须]需要拆分的姓名。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>这个方法会根据传入的姓名，自动拆分first name、last name。</p>
	<p>成功执行后返回对象结构：{first:'...',last:'...'}</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="nameSplit_show_html"></pre>
	</fieldset>
	<h2>演示</h2>
	<fieldset>
		<legend>演示区域</legend>
		<div id="nameSplit_demo_html">
			<input type="text" id="nameSplit_demo_name" value="张三" placeholder="待拆分姓名">
			<input type="button" value="拆分" onclick="$js('#nameSplit_demo_result').text(JSON.stringify($js.nameSplit($js('#nameSplit_demo_name').val())))">
			<fieldset>
				<legend>拆分结果</legend>
				<div id="nameSplit_demo_result"></div>
			</fieldset>
		</div>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.1.7版本开始支持。</p>
	<script>$js('#nameSplit_show_html').text($js('#nameSplit_demo_html').outerHTML()).unindent({ignore:1});</script>
	<script>$js('#nameSplit_demo_result').text(JSON.stringify($js.nameSplit($js('#nameSplit_demo_name').val())));</script>


<!--
//                       
//   #    #  ####  ##### 
//   ##   # #    #   #   
//   # #  # #    #   #   
//   #  # # #    #   #   
//   #   ## #    #   #   
//   #    #  ####    #   
//                       
-->
	<a name="not"></a>
	<h1>$js().not</h1>
	<h2>定义</h2>
	<p>$js().not(selector) : JSLib</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>selector</td>
			<td>[可选]指定选择器字符串。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>这个方法返回移除selector之后的节点。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="not_show_html"></pre>
	</fieldset>
	<h2>演示</h2>
	<fieldset>
		<legend>演示区域</legend>
		<div id="not_demo_html">
			<div class="not_class">A</div>
			<div class="not_class" id="not_id">B</div>
			<div class="not_class">C</div>
			<script>
				$js('.not_class').not('#not_id').css('background-color','#f00');
			</script>
		</div>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.1.30版本开始支持。</p>
	<script>$js('#not_show_html').text($js('#not_demo_html').outerHTML()).unindent({ignore:1});</script>

<!--
//                        
//    ####  ###### ###### 
//   #    # #      #      
//   #    # #####  #####  
//   #    # #      #      
//   #    # #      #      
//    ####  #      #      
//                        
-->
	<a name="off"></a>
	<h1>$js().off</h1>
	<h2>定义</h2>
	<p>$js().off(eventName,func) : JSLib</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>eventName</td>
			<td>[必须]指定的事件名称。</td>
		</tr>
		<tr>
			<td>func</td>
			<td>[必须]指定的处理函数。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>当前匹配节点移除绑定事件处理函数。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre>&lt;div id="a1">
	&lt;div id="a2" class="newclass">a2 text&lt;/div>
	&lt;div id="a3" class="newclass">a3 text&lt;/div>
&lt;/div></pre>
	</fieldset>
	<fieldset>
		<legend>JavaScript</legend>
		<pre>$js('#a2').off('click',function(e){console.log(e)});</pre>
	</fieldset>
	<h2>关联</h2>
	<p><a href="api.html#on">on</a><br></p>
	<h2>版本</h2>
	<p>本方法自0.0.0版本开始支持。</p>


	<a name="on"></a>
	<h1>$js().on</h1>
	<h2>定义</h2>
	<p>$js().on(eventName,func) : JSLib</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>eventName</td>
			<td>[必须]指定的事件名称。</td>
		</tr>
		<tr>
			<td>func</td>
			<td>[必须]指定的处理函数。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>当前匹配节点绑定事件处理函数。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre>&lt;div id="a1">
	&lt;div id="a2" class="newclass">a2 text&lt;/div>
	&lt;div id="a3" class="newclass">a3 text&lt;/div>
&lt;/div></pre>
	</fieldset>
	<fieldset>
		<legend>JavaScript</legend>
		<pre>$js('#a2').on('click',function(e){console.log(e)});</pre>
	</fieldset>
	<h2>关联</h2>
	<p><a href="api.html#bind">bind</a> &nbsp; <a href="api.html#off">off</a></p>
	<h2>版本</h2>
	<p>本方法自0.0.0版本开始支持。</p>


<!--
//                                     #     # ####### #     # #       
//    ####  #    # ##### ###### #####  #     #    #    ##   ## #       
//   #    # #    #   #   #      #    # #     #    #    # # # # #       
//   #    # #    #   #   #####  #    # #######    #    #  #  # #       
//   #    # #    #   #   #      #####  #     #    #    #     # #       
//   #    # #    #   #   #      #   #  #     #    #    #     # #       
//    ####   ####    #   ###### #    # #     #    #    #     # ####### 
//                                                                     
-->
	<a name="outerHTML"></a>
	<h1>$js().outerHTML</h1>
	<h2>定义</h2>
	<p>$js().outerHTML() : String</p>
	<p>$js().outerHTML(HtmlString) : JSLib</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>HtmlString</td>
			<td>[可选]指定的HTML字符串。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>当未传递HtmlString时，将返回第一个匹配元素的HTML文本。</p>
	<p>当传递HtmlString时，会使用这个HtmlString字符串内容填充所有匹配的元素。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="outerHTML_show_html"></pre>
	</fieldset>
	<h2>演示</h2>
	<fieldset>
		<legend>演示区域</legend>
		<div id="outerHTML_demo_html">
			<input type="button" value="获取当前演示代码" onclick="$js('#outerHTML_demo_html_1').text($js('#outerHTML_demo_html').outerHTML())">
			<input type="button" value="清除" onclick="$js('#outerHTML_demo_html_1').text('')">
			<pre id="outerHTML_demo_html_1"></pre>
		</div>
	</fieldset>
	<h2>关联</h2>
	<p>
		<a href="api.html#html">html</a> &nbsp;
		<a href="api.html#text">text</a> &nbsp;
		<a href="api.html#outerText">outerText</a> &nbsp;
	</p>
	<h2>版本</h2>
	<p>本方法自0.1.2版本开始支持。</p>
	<script>$js('#outerHTML_show_html').text($js('#outerHTML_demo_html').outerHTML()).unindent({ignore:1});</script>


<!--
//                                     #######                     
//    ####  #    # ##### ###### #####     #    ###### #    # ##### 
//   #    # #    #   #   #      #    #    #    #       #  #    #   
//   #    # #    #   #   #####  #    #    #    #####    ##     #   
//   #    # #    #   #   #      #####     #    #        ##     #   
//   #    # #    #   #   #      #   #     #    #       #  #    #   
//    ####   ####    #   ###### #    #    #    ###### #    #   #   
//                                                                 
-->
	<a name="outerText"></a>
	<h1>$js().outerText</h1>
	<h2>定义</h2>
	<p>$js().outerText() : String</p>
	<p>$js().outerText(String) : JSLib</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>String</td>
			<td>[可选]指定的文本字符串。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>当未传递String时，将返回第一个匹配元素的文本。</p>
	<p>当传递String时，会使用这个String字符串内容填充所有匹配的元素。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="outerText_show_html"></pre>
	</fieldset>
	<h2>演示</h2>
	<fieldset>
		<legend>演示区域</legend>
		<div id="outerText_demo_html">
			<div id="outerText_demo_2">JSLib</div>
			<input type="button" value="获取当前演示文本" onclick="$js('#outerText_demo_1').text($js('#outerText_demo_2').outerText())">
			<input type="button" value="清除" onclick="$js('#outerText_demo_1').text('')">
			<pre id="outerText_demo_1"></pre>
		</div>
	</fieldset>
	<h2>关联</h2>
	<p>
		<a href="api.html#html">html</a> &nbsp;
		<a href="api.html#text">text</a> &nbsp;
		<a href="api.html#outerHTML">outerHTML</a> &nbsp;
	</p>
	<h2>版本</h2>
	<p>本方法自0.1.2版本开始支持。</p>
	<script>$js('#outerText_show_html').text($js('#outerText_demo_html').outerHTML()).unindent({ignore:1});</script>


<!--
//                                            
//   #####    ##   #####  ###### #    # ##### 
//   #    #  #  #  #    # #      ##   #   #   
//   #    # #    # #    # #####  # #  #   #   
//   #####  ###### #####  #      #  # #   #   
//   #      #    # #   #  #      #   ##   #   
//   #      #    # #    # ###### #    #   #   
//                                            
-->
	<a name="parent"></a>
	<h1>$js().parent()</h1>
	<h2>定义</h2>
	<p>$js().parent(selector) : JSLib</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>selector</td>
			<td>[可选]选择器字符串。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>获取当前匹配节点的父节点，如果设置了selector则需要符合。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre>&lt;div id="a1">
	&lt;div id="a2">a2 text&lt;/div>
	&lt;div id="a3">a3 text&lt;/div>
&lt;/div></pre>
	</fieldset>
	<fieldset>
		<legend>JavaScript</legend>
		<pre>console.log($js('#a2').parent().html());</pre>
	</fieldset>
	<fieldset>
		<legend>输出示例</legend>
		<pre>&lt;div id="a1">
	&lt;div id="a2">a2 text&lt;/div>
	&lt;div id="a3">a3 text&lt;/div>
&lt;/div></pre>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.0.1版本开始支持。</p>



<!--
//                                            #######                                          
//   #####    ##   #####  ###### #    # ##### #       #      ###### #    # ###### #    # ##### 
//   #    #  #  #  #    # #      ##   #   #   #       #      #      ##  ## #      ##   #   #   
//   #    # #    # #    # #####  # #  #   #   #####   #      #####  # ## # #####  # #  #   #   
//   #####  ###### #####  #      #  # #   #   #       #      #      #    # #      #  # #   #   
//   #      #    # #   #  #      #   ##   #   #       #      #      #    # #      #   ##   #   
//   #      #    # #    # ###### #    #   #   ####### ###### ###### #    # ###### #    #   #   
//                                                                                             
-->
	<a name="parentElement"></a>
	<h1>$js().parentElement</h1>
	<h2>定义</h2>
	<p>$js().parentElement : HtmlElement</p>
	<h2>说明</h2>
	<p>获取当前匹配节点列表中第一个节点的父节点。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre>&lt;div id="a1">
	&lt;div id="a2">a2 text&lt;/div>
	&lt;div id="a3">a3 text&lt;/div>
&lt;/div></pre>
	</fieldset>
	<fieldset>
		<legend>JavaScript</legend>
		<pre>console.log($js('#a2').parentElement);</pre>
	</fieldset>
	<fieldset>
		<legend>输出示例</legend>
		<pre>&lt;div id="a1">
	&lt;div id="a2">a2 text&lt;/div>
	&lt;div id="a3">a3 text&lt;/div>
&lt;/div></pre>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.1.8版本开始支持。</p>


<!--
//   ######     #    ####### #     # 
//   #     #   # #      #    #     # 
//   #     #  #   #     #    #     # 
//   ######  #     #    #    ####### 
//   #       #######    #    #     # 
//   #       #     #    #    #     # 
//   #       #     #    #    #     # 
//                                   
-->
	<a name="PATH"></a>
	<h1>$js.PATH</h1>
	<h2>定义</h2>
	<p>$js.PATH : String</p>
	<h2>说明</h2>
	<p>获取或设置当前JSLib文件所在目录。</p>
	<p>正常情况下，系统会自动设置此属性，如果加载的附加库与JSLib不同目录时，需手工设置此属性。如果此属性不正确，则会发生加载附加库错误的情况。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>JavaScript</legend>
		<pre>$js.PATH="/js";</pre>
	</fieldset>
	<h2>版本</h2>
	<p>本属性自0.1.16版本开始支持。</p>



<!--
//                               
//   #####  #####   ####  #####  
//   #    # #    # #    # #    # 
//   #    # #    # #    # #    # 
//   #####  #####  #    # #####  
//   #      #   #  #    # #      
//   #      #    #  ####  #      
//                               
-->
	<a name="prop"></a>
	<h1>$js.prop</h1>
	<h2>定义</h2>
	<p>$js.prop(name,value) : JSLib</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>name</td>
			<td>[必须]属性名称。</td>
		</tr>
		<tr>
			<td>value</td>
			<td>[可选]属性值。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>获取第一个或设置所有匹配节点的属性。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>JavaScript</legend>
		<pre>$js('@name').prop('checked',true);</pre>
	</fieldset>
	<h2>版本</h2>
	<p>本属性自0.2.18版本开始支持。</p>



<!--
//                                                #                       
//   #####  ###### #    #  ####  #    # ######   # #   ##### ##### #####  
//   #    # #      ##  ## #    # #    # #       #   #    #     #   #    # 
//   #    # #####  # ## # #    # #    # #####  #     #   #     #   #    # 
//   #####  #      #    # #    # #    # #      #######   #     #   #####  
//   #   #  #      #    # #    #  #  #  #      #     #   #     #   #   #  
//   #    # ###### #    #  ####    ##   ###### #     #   #     #   #    # 
//                                                                        
-->
	<a name="removeAttr"></a>
	<h1>$js().removeAttr</h1>
	<h2>定义</h2>
	<p>$js().removeAttr(attributeName) : JSLib</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>attributeName</td>
			<td>[必须]属性名称。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>移除所有匹配节点中的指定属性。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre>&lt;div id="a1">
	&lt;div id="a2" title="test">a2 text&lt;/div>
	&lt;div id="a3">a3 text&lt;/div>
&lt;/div></pre>
	</fieldset>
	<fieldset>
		<legend>JavaScript</legend>
		<pre>$js('div').removeAttr('title');</pre>
	</fieldset>
	<fieldset>
		<legend>执行后原HTML信息变为</legend>
		<pre>&lt;div id="a1">
	&lt;div id="a2">a2 text&lt;/div>
	&lt;div id="a3">a3 text&lt;/div>
&lt;/div></pre>
	</fieldset>
	<h2>关联</h2>
	<p><a href="#attr">attr</a></p>
	<h2>版本</h2>
	<p>本方法自0.1.0版本开始支持。</p>



<!--
//                                                                     #####                       
//   #####  ######  ####  #####  ######  ####   ####  #  ####  #    # #     #   ##   #       ####  
//   #    # #      #    # #    # #      #      #      # #    # ##   # #        #  #  #      #    # 
//   #    # #####  #      #    # #####   ####   ####  # #    # # #  # #       #    # #      #      
//   #####  #      #  ### #####  #           #      # # #    # #  # # #       ###### #      #      
//   #   #  #      #    # #   #  #      #    # #    # # #    # #   ## #     # #    # #      #    # 
//   #    # ######  ####  #    # ######  ####   ####  #  ####  #    #  #####  #    # ######  ####  
//                                                                                                 
-->
	<a name="regressionCalc"></a>
	<h1>$js.regressionCalc</h1>
	<h2>定义</h2>
	<p>$js.regressionCalc(parameter,x) : number</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>parameter</td>
			<td>[必须]$js.regressionPolynomial()计算的多项式参数。</td>
		</tr>
		<tr>
			<td>x</td>
			<td>[必须]X值。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>根据指定的多项式参数parameter及x，计算并返回Y。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="regressionCalc_show_html"></pre>
	</fieldset>
	<h2>演示</h2>
	<fieldset>
		<legend>运行结果</legend>
		<pre id="regressionCalc_result"></pre>
		<div id="regressionCalc_demo_html">
			<script>
				var data=[[1,1],[2,3],[3,10],[4,15],[5,26],[6,34],[7,40],[8,70],[9,80]];
				var result=$js.regressionPolynomial(data);

				$js('#regressionCalc_result').text("Y = "+$js.regressionCalc(result.parameter,3.5));
			</script>
		</div>
	</fieldset>
	<h2>关联</h2>
	<p>
		<a href="api.html#regressionCalcY">regressionCalcY</a> &nbsp; 
		<a href="api.html#regressionLogarithmic">regressionLogarithmic</a> &nbsp; 
		<a href="api.html#regressionPolynomial">regressionPolynomial</a> &nbsp; 
		<a href="api.html#regressionSwap">regressionSwap</a> &nbsp; 
	</p>
	<h2>版本</h2>
	<p>本方法自0.1.3版本开始支持。</p>
	<script>
		$js('#regressionCalc_show_html').text($js('#regressionCalc_demo_html').outerHTML()).unindent({ignore:1});
	</script>



<!--
//                                                                     #####                       #     # 
//   #####  ######  ####  #####  ######  ####   ####  #  ####  #    # #     #   ##   #       ####   #   #  
//   #    # #      #    # #    # #      #      #      # #    # ##   # #        #  #  #      #    #   # #   
//   #    # #####  #      #    # #####   ####   ####  # #    # # #  # #       #    # #      #         #    
//   #####  #      #  ### #####  #           #      # # #    # #  # # #       ###### #      #         #    
//   #   #  #      #    # #   #  #      #    # #    # # #    # #   ## #     # #    # #      #    #    #    
//   #    # ######  ####  #    # ######  ####   ####  #  ####  #    #  #####  #    # ######  ####     #    
//                                                                                                         
-->
	<a name="regressionCalcY"></a>
	<h1>$js.regressionCalcY</h1>
	<h2>定义</h2>
	<p>$js.regressionCalcY(parameter,x) : number</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>parameter</td>
			<td>[必须]$js.regressionPolynomial()计算的多项式参数。</td>
		</tr>
		<tr>
			<td>y</td>
			<td>[必须]y值。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>根据指定的多项式参数parameter及y，计算并返回x。</p>
	<p>因为一元二次方程会有多于一个解的情况，所以这里返回的是一个数组。使用时，需要根据实际情况进行筛选。</p>
	<p>注意：因为根据y计算x，需要做回归方程反函数，所以当前仅支持一元一次和一元二次回归方程的计算。如果需要进行再高阶数的计算，我们建议重组一个yx样式的回归方程进行数值预测($js.regressionSwap方法可以方便进行数据交换操作)。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="regressionCalcY_show_html"></pre>
	</fieldset>
	<h2>演示</h2>
	<fieldset>
		<legend>运行结果</legend>
		<pre id="regressionCalcY_result"></pre>
		<div id="regressionCalcY_demo_html">
			<script>
				var data=[[1,1],[2,3],[3,10],[4,15],[5,26],[6,34],[7,40],[8,70],[9,80]];
				var result=$js.regressionPolynomial(data);

				$js('#regressionCalcY_result').text("X = "+$js.regressionCalcY(result.parameter,10));
			</script>
		</div>
	</fieldset>
	<h2>关联</h2>
	<p>
		<a href="api.html#regressionCalc">regressionCalc</a> &nbsp; 
		<a href="api.html#regressionLogarithmic">regressionLogarithmic</a> &nbsp; 
		<a href="api.html#regressionPolynomial">regressionPolynomial</a> &nbsp; 
		<a href="api.html#regressionSwap">regressionSwap</a> &nbsp; 
	</p>
	<h2>版本</h2>
	<p>本方法自0.1.3版本开始支持。</p>
	<script>
		$js('#regressionCalcY_show_html').text($js('#regressionCalcY_demo_html').outerHTML()).unindent({ignore:1});
	</script>



<!--
//                                                                    #                                                                  
//   #####  ######  ####  #####  ######  ####   ####  #  ####  #    # #        ####   ####    ##   #####  # ##### #    # #    # #  ####  
//   #    # #      #    # #    # #      #      #      # #    # ##   # #       #    # #    #  #  #  #    # #   #   #    # ##  ## # #    # 
//   #    # #####  #      #    # #####   ####   ####  # #    # # #  # #       #    # #      #    # #    # #   #   ###### # ## # # #      
//   #####  #      #  ### #####  #           #      # # #    # #  # # #       #    # #  ### ###### #####  #   #   #    # #    # # #      
//   #   #  #      #    # #   #  #      #    # #    # # #    # #   ## #       #    # #    # #    # #   #  #   #   #    # #    # # #    # 
//   #    # ######  ####  #    # ######  ####   ####  #  ####  #    # #######  ####   ####  #    # #    # #   #   #    # #    # #  ####  
//                                                                                                                                       
-->
	<a name="regressionLogarithmic"></a>
	<h1>$js.regressionLogarithmic</h1>
	<h2>定义</h2>
	<p>$js.regressionLogarithmic(data) : object</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>data</td>
			<td>[必须]需要做回归计算的数据。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>对指定数据进行对数回归。计算后返回一个固定对象：</p>
	<pre>
	{
		data:[...],		//原始有效回归数据
		parameter:[...],	//回归参数
		expresion:string	//显示使用的多项式字符串
		points:[[x,y],...],	//数据节点x对应回归后的数据。如果需要增加此展示点，可以调用calc或calcY方法进行添加
		points_minx(),		//获取points中最小x
		points_miny(),		//获取points中最小y
		calc:function(x){},	//内部调用了$js.regressionCalc，并且此计算点也会自动增加到points展示点列表中
		calcY:function(y){},	//内部调用了$js.regressionCalcY，并且此计算点也会自动增加到points展示点列表中
	}</pre>
	<p>这个方法可以独立使用，也可以配合echarts使用。像points就是专门为echarts显示准备的。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="regressionLogarithmic_show_html"></pre>
	</fieldset>
	<fieldset>
		<legend>JavaScript</legend>
		<pre>regressionLogarithmic_showcharts();</pre>
	</fieldset>
	<h2>演示</h2>
	<fieldset>
		<legend>演示区域</legend>
		<div id="regressionLogarithmic_demo_html">
			<div id="regressionLogarithmic_charts" style="height:240px;"></div>
			<fieldset>
				<legend>返回结果</legend>
				<pre id="regressionLogarithmic_result"></pre>
			</fieldset>
			<script src="../third/echarts.min.js"></script>
			<script>
				function regressionLogarithmic_showcharts()
				{
					var data=[[1,1],[2,3],[3,10],[4,15],[5,26],[6,34],[7,40],[8,70],[9,80]];
					var result=$js.regressionLogarithmic(data);

					//SHOW
					var txt='';
					txt+="      data:"+JSON.stringify(result['data'])+"\n";
					txt+=" parameter:"+JSON.stringify(result['parameter'])+"\n";
					txt+="expression:"+result['expression']+"\n";
					txt+="    points:[\n";
					for(let p of result['points'])
						txt+='               '+JSON.stringify(p)+"\n";
					txt+="           ]";
					$js('#regressionLogarithmic_result').text(txt);

					//CHARTS
					var myChart = echarts.init(document.getElementById('regressionLogarithmic_charts'));
					var option={
						grid:{left:"32px",right:"32px",top:"32px",bottom:'32px'},
			  			xAxis:{},
						yAxis:{},
						series:
						[
							{type:"line",data:result.points,symbol:"none"},
							{type:'scatter',data:result.data,symbol:"circle"},
						]
					};
					option && myChart.setOption(option);
				}
			</script>
		</div>
	</fieldset>
	<h2>关联</h2>
	<p>
		<a href="api.html#regressionCalc">regressionCalc</a> &nbsp; 
		<a href="api.html#regressionCalcY">regressionCalcY</a> &nbsp; 
		<a href="api.html#regressionPolynomial">regressionPolynomial</a> &nbsp; 
		<a href="api.html#regressionSwap">regressionSwap</a> &nbsp; 
	</p>
	<h2>版本</h2>
	<p>本方法自0.1.7版本开始支持。</p>
	<script>
		$js('#regressionLogarithmic_show_html').text($js('#regressionLogarithmic_demo_html').outerHTML()).unindent({ignore:1});

		regressionLogarithmic_showcharts();
	</script>


<!--
//                                                                    ######                                                           
//   #####  ######  ####  #####  ######  ####   ####  #  ####  #    # #     #  ####  #      #   # #    #  ####  #    # #   ##   #      
//   #    # #      #    # #    # #      #      #      # #    # ##   # #     # #    # #       # #  ##   # #    # ##  ## #  #  #  #      
//   #    # #####  #      #    # #####   ####   ####  # #    # # #  # ######  #    # #        #   # #  # #    # # ## # # #    # #      
//   #####  #      #  ### #####  #           #      # # #    # #  # # #       #    # #        #   #  # # #    # #    # # ###### #      
//   #   #  #      #    # #   #  #      #    # #    # # #    # #   ## #       #    # #        #   #   ## #    # #    # # #    # #      
//   #    # ######  ####  #    # ######  ####   ####  #  ####  #    # #        ####  ######   #   #    #  ####  #    # # #    # ###### 
//                                                                                                                                     
-->
	<a name="regressionPolynomial"></a>
	<h1>$js.regressionPolynomial</h1>
	<h2>定义</h2>
	<p>$js.regressionPolynomial(data,order) : object</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>data</td>
			<td>[必须]需要做回归计算的数据。</td>
		</tr>
		<tr>
			<td>order</td>
			<td>[可选]回归阶数，默认：2。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>对指定数据进行多项式回归。计算后返回一个固定对象：</p>
	<pre>
	{
		data:[...],		//原始有效回归数据
		parameter:[...],	//多项式参数
		expresion:string	//显示使用的多项式字符串
		points:[[x,y],...],	//数据节点x对应回归后的数据。如果需要增加此展示点，可以调用calc或calcY方法进行添加
		points_minx(),		//获取points中最小x
		points_maxx(),		//获取points中最大x
		points_miny(),		//获取points中最小y
		points_maxy(),		//获取points中最大y
		calc:function(x){},	//内部调用了$js.regressionCalc，并且此计算点也会自动增加到points展示点列表中
		calcY:function(y){},	//内部调用了$js.regressionCalcY，并且此计算点也会自动增加到points展示点列表中
		calcMaxY:function(){},	//在当前数值中x范围内，求最大y值并返回[x,y]结果。这个精度大约在1e-6。
		full(num=100),			//自动填充数据，主要是用于echarts展示使用，不填充时可能由于points过少，出来的图像不好看。参数num是指填充数量。
	}</pre>
	<p>这个方法可以独立使用，也可以配合echarts使用。像points就是专门为echarts显示准备的。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="regressionPolynomial_show_html"></pre>
	</fieldset>
	<fieldset>
		<legend>JavaScript</legend>
		<pre>regressionPolynomial_showcharts();</pre>
	</fieldset>
	<h2>演示</h2>
	<fieldset>
		<legend>演示区域</legend>
		<div id="regressionPolynomial_demo_html">
			<div id="regressionPolynomial_charts" style="height:240px;"></div>
			<fieldset>
				<legend>返回结果</legend>
				<pre id="regressionPolynomial_result"></pre>
			</fieldset>
			<script src="../third/echarts.min.js"></script>
			<script>
				function regressionPolynomial_showcharts()
				{
					var data=[[1,1],[2,3],[3,10],[4,15],[5,26],[6,34],[7,40],[8,70],[9,80]];
					var result=$js.regressionPolynomial(data);

					//SHOW
					var txt='';
					txt+="      data:"+JSON.stringify(result['data'])+"\n";
					txt+=" parameter:"+JSON.stringify(result['parameter'])+"\n";
					txt+="expression:"+result['expression']+"\n";
					txt+="    points:[\n";
					for(let p of result['points'])
						txt+='               '+JSON.stringify(p)+"\n";
					txt+="           ]\n";
					let rr=result.calcMaxY();
					txt+=`  calcMaxY:[ ${rr.x} , ${rr.y} ]\n`;
					$js('#regressionPolynomial_result').text(txt);

					//CHARTS
					var myChart = echarts.init(document.getElementById('regressionPolynomial_charts'));
					var option={
						grid:{left:"32px",right:"32px",top:"32px",bottom:'32px'},
			  			xAxis:{},
						yAxis:{},
						series:
						[
							{type:"line",data:result.points,symbol:"none"},
							{type:'scatter',data:result.data,symbol:"circle"},
						]
					};
					option && myChart.setOption(option);
				}
			</script>
		</div>
	</fieldset>
	<h2>关联</h2>
	<p>
		<a href="api.html#regressionCalc">regressionCalc</a> &nbsp; 
		<a href="api.html#regressionCalcY">regressionCalcY</a> &nbsp; 
		<a href="api.html#regressionLogarithmic">regressionLogarithmic</a> &nbsp; 
		<a href="api.html#regressionSwap">regressionSwap</a> &nbsp; 
	</p>
	<h2>版本</h2>
	<p>本方法自0.1.3版本开始支持。</p>
	<p>自0.1.4版本开始，调用calc或calcY时，此计算点会自动添加到points数组中。这个计算点自动增加到points中，是因为在echarts展示时，本身points是一些关键点数据，而指定点可能会因为误差造成展示点显示与实际值出现错位，造成计算的点不能和points连线重合。</p>
	<p>自0.1.5版本开始，返回值新增points_minx()和points_miny()方法。</p>
	<p>自0.2.12版本开始，返回值新增calcMaxY方法。</p>
	<p>自0.2.20版本开始，返回值新增maxx、maxy、full方法</p>
	<script>
		$js('#regressionPolynomial_show_html').text($js('#regressionPolynomial_demo_html').outerHTML()).unindent({ignore:1});

		regressionPolynomial_showcharts();
	</script>



<!--
//                                                                     #####                       
//   #####  ######  ####  #####  ######  ####   ####  #  ####  #    # #     # #    #   ##   #####  
//   #    # #      #    # #    # #      #      #      # #    # ##   # #       #    #  #  #  #    # 
//   #    # #####  #      #    # #####   ####   ####  # #    # # #  #  #####  #    # #    # #    # 
//   #####  #      #  ### #####  #           #      # # #    # #  # #       # # ## # ###### #####  
//   #   #  #      #    # #   #  #      #    # #    # # #    # #   ## #     # ##  ## #    # #      
//   #    # ######  ####  #    # ######  ####   ####  #  ####  #    #  #####  #    # #    # #      
//                                                                                                 
-->
	<a name="regressionSwap"></a>
	<h1>$js.regressionSwap</h1>
	<h2>定义</h2>
	<p>$js.regressionSwap(datalist) : array</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>datalist</td>
			<td>[必须]回归数据数组。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>对回归数据中xy进行对换。</p>
	<p>例如原数组：[[1,2],[3,4],...]，对换后数组为：[[2,1],[4,3],...]。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="regressionSwap_show_html"></pre>
	</fieldset>
	<fieldset>
		<legend>JavaScript</legend>
		<pre>regressionSwap_showcharts();</pre>
	</fieldset>
	<h2>演示</h2>
	<fieldset>
		<legend>演示区域</legend>
		<div id="regressionSwap_demo_html">
			<div id="regressionSwap_charts" style="height:240px;"></div>
			<fieldset>
				<legend>返回结果</legend>
				<pre id="regressionSwap_result"></pre>
			</fieldset>
			<script src="../third/echarts.min.js"></script>
			<script>
				function regressionSwap_showcharts()
				{
					var data=[[1,1],[2,3],[3,10],[4,15],[5,26],[6,34],[7,40],[8,70],[9,80]];
					data=$js.regressionSwap(data);
					var result=$js.regressionPolynomial(data);

					//SHOW
					var txt='';
					txt+="      data:"+JSON.stringify(result['data'])+"\n";
					txt+=" parameter:"+JSON.stringify(result['parameter'])+"\n";
					txt+="expression:"+result['expression']+"\n";
					txt+="    points:[\n";
					for(let p of result['points'])
						txt+='               '+JSON.stringify(p)+"\n";
					txt+="           ]";
					$js('#regressionSwap_result').text(txt);

					//CHARTS
					var myChart = echarts.init(document.getElementById('regressionSwap_charts'));
					var option={
						grid:{left:"32px",right:"32px",top:"32px",bottom:'32px'},
			  			xAxis:{},
						yAxis:{},
						series:
						[
							{type:"line",data:result.points,symbol:"none"},
							{type:'scatter',data:result.data,symbol:"circle"},
						]
					};
					option && myChart.setOption(option);
				}
			</script>
		</div>
	</fieldset>
	<h2>关联</h2>
	<p>
		<a href="api.html#regressionCalc">regressionCalc</a> &nbsp; 
		<a href="api.html#regressionCalcY">regressionCalcY</a> &nbsp; 
		<a href="api.html#regressionLogarithmic">regressionLogarithmic</a> &nbsp; 
		<a href="api.html#regressionPolynomial">regressionPolynomial</a>
	</p>
	<h2>版本</h2>
	<p>本方法自0.1.3版本开始支持。</p>
	<script>
		$js('#regressionSwap_show_html').text($js('#regressionSwap_demo_html').outerHTML()).unindent({ignore:1});

		regressionSwap_showcharts();
	</script>



<!--
//                                              #####                              
//   #####  ###### #    #  ####  #    # ###### #     # #        ##    ####   ####  
//   #    # #      ##  ## #    # #    # #      #       #       #  #  #      #      
//   #    # #####  # ## # #    # #    # #####  #       #      #    #  ####   ####  
//   #####  #      #    # #    # #    # #      #       #      ######      #      # 
//   #   #  #      #    # #    #  #  #  #      #     # #      #    # #    # #    # 
//   #    # ###### #    #  ####    ##   ######  #####  ###### #    #  ####   ####  
//                                                                                 
-->
	<a name="removeClass"></a>
	<h1>$js().removeClass</h1>
	<h2>定义</h2>
	<p>$js().removeClass(classname) : JSLib</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>classname</td>
			<td>[必须]指定的CSS类名。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>当前匹配节点移出指定的CSS类。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre>&lt;div id="a1">
	&lt;div id="a2" class="newclass">a2 text&lt;/div>
	&lt;div id="a3" class="newclass">a3 text&lt;/div>
&lt;/div></pre>
	</fieldset>
	<fieldset>
		<legend>JavaScript</legend>
		<pre>$js('#a2').removeClass('newclass');</pre>
	</fieldset>
	<fieldset>
		<legend>执行后原HTML信息变为</legend>
		<pre>&lt;div id="a1">
	&lt;div id="a2">a2 text&lt;/div>
	&lt;div id="a3" class="newclass">a3 text&lt;/div>
&lt;/div></pre>
	</fieldset>
	<h2>关联</h2>
	<p>
		<a href="api.html#addClass">addClass</a> &nbsp;
		<a href="api.html#hasClass">hasClass</a> &nbsp;
	</p>
	<h2>版本</h2>
	<p>本方法自0.0.0版本开始支持。</p>



<!--
//                                      
//   #####   ####  #    # #    # #####  
//   #    # #    # #    # ##   # #    # 
//   #    # #    # #    # # #  # #    # 
//   #####  #    # #    # #  # # #    # 
//   #   #  #    # #    # #   ## #    # 
//   #    #  ####   ####  #    # #####  
//                                      
-->
	<a name="round"></a>
	<h1>$js.round</h1>
	<h2>定义</h2>
	<p>$js.round(value,interval,gb8170) : Number</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>value</td>
			<td>[必须]需要修约的数字。</td>
		</tr>
		<tr>
			<td>interval</td>
			<td>[可选]修约间隔，默认值：1。</td>
		</tr>
		<tr>
			<td>gb8170=false|true</td>
			<td>[可选]是否使用GB8170规则进行修约，默认值：false。</td>
		</tr>
	</table>
	<h2>全局参数</h2>
	<table>
		<tr>
			<td>$js.round.DEFAULT_GB8170=false|true</td>
			<td>[可选]全局默认的数值修约是否遵循GB8170。</td>
		</tr>
		<tr>
			<td>$js.round.DEFAULT_DICT={}</td>
			<td>[可选]全局默认的数值修约字典，使用方式请参照示例。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>本方法对指定数字进行修约。此方法除简单的四舍五入，还可以进行不同修约间隔的舍入，例如2为间隔的舍入等。</p>
	<p>gb8170=true时，按照GB/T 8170标准对指定的数字进行修约，这个修约标准与普通的四舍五入有点区别，俗称：四舍六进五成双，奇进偶不进。具体规则请参阅相应的标准文件。</p>
	<p>注意：为了防止浮点数误差造成的进位错误，本方法当前仅保证8位有效小数位（应该不止8位，但再大的没有做过测试）。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML & JavaScript (部分)</legend>
		<pre>...
&lt;tr>
	&lt;td>12.1498&lt;/td>
	&lt;td>1&lt;/td>
	&lt;td>12&lt;/td>
	&lt;td>&lt;script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html()))&lt;/script>&lt;/td>
&lt;/tr>
...</pre>
	</fieldset>
	<h2>演示</h2>
	<fieldset>
		<legend>实例</legend>
		<table border="1">
			<tr>
				<th>需修约的数值</th>
				<th>修约间隔</th>
				<th>GB8170修约后理论值</th>
				<th>普通修约</th>
				<th>GB8170修约</th>
			</tr>
			<tr>
				<td>12.1498</td>
				<td>1</td>
				<td>12</td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html()))</script></td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html(),true))</script></td>
			</tr>
			<tr>
				<td>12.1498</td>
				<td>0.1</td>
				<td>12.1</td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html()))</script></td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html(),true))</script></td>
			</tr>
			<tr>
				<td>1268</td>
				<td>100</td>
				<td>1300</td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html()))</script></td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html(),true))</script></td>
			</tr>
			<tr>
				<td>10.5002</td>
				<td>1</td>
				<td>11</td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html()))</script></td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html(),true))</script></td>
			</tr>
			<tr>
				<td>1.050</td>
				<td>0.1</td>
				<td>1.0</td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html()))</script></td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html(),true))</script></td>
			</tr>
			<tr>
				<td>0.35</td>
				<td>0.1</td>
				<td>0.4</td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html()))</script></td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html(),true))</script></td>
			</tr>
			<tr>
				<td>2500</td>
				<td>1000</td>
				<td>2000</td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html()))</script></td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html(),true))</script></td>
			</tr>
			<tr>
				<td>3500</td>
				<td>1000</td>
				<td>4000</td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html()))</script></td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html(),true))</script></td>
			</tr>
			<tr>
				<td>-355</td>
				<td>10</td>
				<td>360</td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html()))</script></td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html(),true))</script></td>
			</tr>
			<tr>
				<td>-325</td>
				<td>10</td>
				<td>-320</td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html()))</script></td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html(),true))</script></td>
			</tr>
			<tr>
				<td>-0.0365</td>
				<td>0.001</td>
				<td>-0.036</td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html()))</script></td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html(),true))</script></td>
			</tr>
			<tr>
				<td>97.46</td>
				<td>1</td>
				<td>97</td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html()))</script></td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html(),true))</script></td>
			</tr>
			<tr>
				<td>15.4546</td>
				<td>1</td>
				<td>15</td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html()))</script></td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html(),true))</script></td>
			</tr>
			<tr>
				<td>-15.4546</td>
				<td>1</td>
				<td>-15</td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html()))</script></td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html(),true))</script></td>
			</tr>
			<tr>
				<td>16.5203</td>
				<td>1</td>
				<td>17</td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html()))</script></td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html(),true))</script></td>
			</tr>
			<tr>
				<td>-16.5203</td>
				<td>1</td>
				<td>-17</td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html()))</script></td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html(),true))</script></td>
			</tr>
			<tr>
				<td>17.5000</td>
				<td>1</td>
				<td>18</td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html()))</script></td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html(),true))</script></td>
			</tr>
			<tr>
				<td>60.25</td>
				<td>0.5</td>
				<td>60.0</td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html()))</script></td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html(),true))</script></td>
			</tr>
			<tr>
				<td>60.38</td>
				<td>0.5</td>
				<td>60.5</td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html()))</script></td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html(),true))</script></td>
			</tr>
			<tr>
				<td>60.28</td>
				<td>0.5</td>
				<td>60.5</td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html()))</script></td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html(),true))</script></td>
			</tr>
			<tr>
				<td>-60.75</td>
				<td>0.5</td>
				<td>-61.0</td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html()))</script></td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html(),true))</script></td>
			</tr>
			<tr>
				<td>830</td>
				<td>20</td>
				<td>840</td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html()))</script></td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html(),true))</script></td>
			</tr>
			<tr>
				<td>842</td>
				<td>20</td>
				<td>840</td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html()))</script></td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html(),true))</script></td>
			</tr>
			<tr>
				<td>832</td>
				<td>20</td>
				<td>840</td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html()))</script></td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html(),true))</script></td>
			</tr>
			<tr>
				<td>-930</td>
				<td>20</td>
				<td>-920</td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html()))</script></td>
				<td><script>$js().parent().html($js.round($js().closest('TR').find('td').first().html(),$js().closest('TR').find('td').eq(1).html(),true))</script></td>
			</tr>
		</table>
		<p>上表中的“修约”列是JSLib实时计算出来的。</p>
	</fieldset>
	<h2>示例2</h2>
	<fieldset>
		<legend>代码</legend>
		<pre id="round_demo2_show"></pre>
	</fieldset>
	<fieldset>
		<legend>演示</legend>
		<div id="round_demo2_src">
			<table border="1">
				<tr>
					<th>输入值</th>
					<th>修约间隔</th>
					<th>输出值</th>
					<th>测试说明</th>
				</tr>
				<tr>
					<td rowspan="2"><input type="text" name="round_num1" value="3.1415926" oninput="round_demo()"></td>
					<td><input type="text" name="round_interval1" value="0.01" oninput="round_demo()"></td>
					<td name="round_result1"></td>
					<td>直接输入修约间隔</td>
				</tr>
				<tr>
					<td>
						<select name="round_interval2" onchange="round_demo()">
							<option></option>
							<option value="一位小数">一位小数</option>
							<option value="二位小数" selected>两位小数</option>
							<option value="三位小数">三位小数</option>
						</select>
					</td>
					<td name="round_result2"></td>
					<td>使用修约字典方式</td>
				</tr>
			</table>
			<script>
				$js.round.DEFAULT_DICT={'一位小数':0.1,'二位小数':0.01,'三位小数':0.001};
				function round_demo()
				{
					console.log($js('@round_interval2'),$js('@round_interval2').val());
					$js('@round_result1').text($js.round($js('@round_num1').val(),$js('@round_interval1').val()));
					$js('@round_result2').text($js.round($js('@round_num1').val(),$js('@round_interval2').val()));
				}
				round_demo();
			</script>
		</div>
	</fieldset>
	<h2>版本</h2>
	<p>本属性自0.1.13版本开始支持。</p>
	<p>本属性自0.2.0版本开始支持$js.round.DEFAULT_GB8170和$js.round.DEFAULT_DICT全局设置。</p>
	<script>$js('#round_demo2_show').text($js('#round_demo2_src').html()).unindent({ignore:1});</script>

<!--
//                   ###   
//    ####  #####   #   #  
//   #      #    # #     # 
//    ####  #    # #     # 
//        # #    # #     # 
//   #    # #    #  #   #  
//    ####  #####    ###   
//                         
-->
	<a name="sd0"></a>
	<h1>$js.sd0</h1>
	<h2>定义</h2>
	<p>$js.sd0(arr) : Number</p>
	<h2>说明</h2>
	<p>计算总体标准差。</p>
	<h2>关联</h2>
	<p>
		<a href="api.html#sd1">sd1</a> &nbsp;
	</p>
	<h2>版本</h2>
	<p>本属性自0.2.0版本开始支持。</p>


<!--
//                   #   
//    ####  #####   ##   
//   #      #    # # #   
//    ####  #    #   #   
//        # #    #   #   
//   #    # #    #   #   
//    ####  #####  ##### 
//                       
-->
	<a name="sd1"></a>
	<h1>$js.sd1</h1>
	<h2>定义</h2>
	<p>$js.sd1(arr) : Number</p>
	<h2>说明</h2>
	<p>计算样本标准差。</p>
	<h2>关联</h2>
	<p>
		<a href="api.html#sd1">sd1</a> &nbsp;
	</p>
	<h2>版本</h2>
	<p>本属性自0.2.0版本开始支持。</p>


<!--
//                               
//    ####  #    #  ####  #    # 
//   #      #    # #    # #    # 
//    ####  ###### #    # #    # 
//        # #    # #    # # ## # 
//   #    # #    # #    # ##  ## 
//    ####  #    #  ####  #    # 
//                                                       
-->
	<a name="show"></a>
	<h1>$js().show</h1>
	<h2>定义</h2>
	<p>$js().show() : JSLib</p>
	<h2>说明</h2>
	<p>显示当前元素。</p>
	<h2>关联</h2>
	<p>
		<a href="api.html#hide">hide</a> &nbsp;
	</p>
	<h2>版本</h2>
	<p>本属性自0.1.14版本开始支持。</p>



<!--
//                                                             
//    ####  #    #  ####  #    # # #    #   ##    ####  ###### 
//   #      #    # #    # #    # # ##  ##  #  #  #    # #      
//    ####  ###### #    # #    # # # ## # #    # #      #####  
//        # #    # #    # # ## # # #    # ###### #  ### #      
//   #    # #    # #    # ##  ## # #    # #    # #    # #      
//    ####  #    #  ####  #    # # #    # #    #  ####  ###### 
//                                                             
-->
	<a name="showimage"></a>
	<h1>$js.showimage</h1>
	<h2>定义</h2>
	<p>$js.showimage(opts) : HtmlElement</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>opts</td>
			<td>[必须]参数。</td>
		</tr>
		<tr>
			<td>opts.file</td>
			<td>[必填]需要显示的图片路径。</td>
		</tr>
		<tr>
			<td>opts.basepath</td>
			<td>[可选]图片文件的基路径。</td>
		</tr>
		<tr>
			<td>opts.fullscreen=false|true</td>
			<td>[可选]是否全屏显示。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>全屏显示指定的图片文件，支持鼠标滚轮缩放和拖拽位置移动。点击空白区或Esc键退出显示状态。</p>
	<p>当opts.fullscreen=false时，图片是在当前窗口内全窗口显示；当fullscreen=true时会在顶层桌面显示图片。</p>
	<p>本方式运行后返回信息显示HtmlElement元素，此元素包含一个close()方法，可以使用此方法手工关闭信息显示。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="showimage_show_html"></pre>
	</fieldset>
	<h2>演示</h2>
	<fieldset>
		<legend>演示区域</legend>
		<div id="showimage_demo_html">
			<button onclick="runme(this)">$js.showimage({file:'demo1.png'})</button>
			<button onclick="runme(this)">$js.showimage({file:'/upload/demo1.png',fullscreen:true})</button>
			<script>
				function runme(e)
				{
					eval(e.innerHTML);
				}
			</script>
		</div>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.1.8版本开始支持。</p>
	<script>
		$js('#showimage_show_html').text($js('#showimage_demo_html').outerHTML()).unindent({ignore:1});
	</script>


<!--
//                             
//   ##### ###### #    # ##### 
//     #   #       #  #    #   
//     #   #####    ##     #   
//     #   #        ##     #   
//     #   #       #  #    #   
//     #   ###### #    #   #   
//                             
-->
	<a name="text"></a>
	<h1>$js().text</h1>
	<h2>定义</h2>
	<p>$js().text() : String</p>
	<p>$js().text(TextString) : JSLib</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>TextString</td>
			<td>[可选]指定的文本字符串。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>当未传递TextString时，将返回第一个匹配节点的文本字符串。</p>
	<p>当传递TextString时，会使用这个TextString字符串内容填充所有匹配的节点。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre>&lt;div id="a1">
	&lt;div id="a2">a2 text&lt;/div>
	&lt;div id="a3">a3 text&lt;/div>
&lt;/div></pre>
	</fieldset>
	<fieldset>
		<legend>JavaScript</legend>
		<pre>console.log($js('#a1').text());</pre>
	</fieldset>
	<fieldset>
		<legend>输出示例</legend>
		<pre>a2 text
a3 text</pre>
	</fieldset>
	<fieldset>
		<legend>JavaScript</legend>
		<pre>$js('#a1').text('abc');</pre>
	</fieldset>
	<fieldset>
		<legend>执行后原HTML信息变为</legend>
		<pre>&lt;div id="a1">
	abc
&lt;/div></pre>
	</fieldset>
	<h2>关联</h2>
	<p><a href="api.html#html">html</a><br></p>
	<h2>版本</h2>
	<p>本方法自0.1.0版本开始支持。</p>



	<a name="textarea"></a>
	<h1>$js.textarea</h1>
	<h2>定义</h2>
	<p>$js().textarea(opts) : HtmlElement</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>opts.el : HtmlElement</td>
			<td>[可选]对应的字段。</td>
		</tr>
		<tr>
			<td>opts.name : String</td>
			<td>[可选]字段名称。</td>
		</tr>
		<tr>
			<td>opts.className : String</td>
			<td>[可选]字段CSS样式名称。</td>
		</tr>
		<tr>
			<td>opts.rows : Number</td>
			<td>[可选]默认行高。</td>
		</tr>
		<tr>
			<td>opts.maxLength : Number</td>
			<td>[可选]最大字数。</td>
		</tr>
		<tr>
			<td>opts.placeholder : String</td>
			<td>[可选]提示文本。</td>
		</tr>
		<tr>
			<td>opts.value : String</td>
			<td>[可选]字段显示内容。</td>
		</tr>
		<tr>
			<td>opts.prompt=false|true</td>
			<td>[可选]是否提示字数。默认值：false。</td>
		</tr>
		<tr>
			<td>opts.autoheight=false|true</td>
			<td>[可选]是否启用自动高度。默认值：false。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>此方法增强或生成一个TEXTAREA。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre>&lt;div id="a1">
	&lt;div id="a2">a2 text&lt;/div>
	&lt;div id="a3">a3 text&lt;/div>
&lt;/div></pre>
	</fieldset>
	<fieldset>
		<legend>JavaScript</legend>
		<script>$js.textarea({name:'test',value:'123',autoheight:true,prompt:true})</script>
	</fieldset>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.2.19版本开始支持。</p>


<!--
//                                            
//   #####  ####  #####  #    #  ####   ####  
//     #   #    # #    # ##  ## #      #    # 
//     #   #    # #    # # ## #  ####  #      
//     #   #    # #####  #    #      # #  ### 
//     #   #    # #      #    # #    # #    # 
//     #    ####  #      #    #  ####   ####  
//                                            
-->
	<a name="topmsg"></a>
	<h1>$js.topmsg</h1>
	<h2>定义</h2>
	<p>$js.topmsg(opts) : HtmlElement</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>opts</td>
			<td>[必须]需要操作的HTML元素。</td>
		</tr>
		<tr>
			<td>opts.msg</td>
			<td>[必填]显示文本，可以为HTML格式内容。</td>
		</tr>
		<tr>
			<td>opts.parent=self</td>
			<td>[必填]显示信息的上层窗口。默认：self。可选值：top或其他指定窗口名称。</td>
		</tr>
		<tr>
			<td>opts.timeout=5000</td>
			<td>[可选]显示时长，单位：毫秒，默认值：5000。</td>
		</tr>
		<tr>
			<td>opts.flag=false</td>
			<td>[可选]是否着重显示，即：红色、加粗显示。</td>
		</tr>
		<tr>
			<td>opts.onclick=function(e,el){}</td>
			<td>[可选]信息框点击回调函数。e是onclick事件信息，el是当前信息显示的HtmlElement，可以使用el.close()手工关闭提示信息。</td>
		</tr>
		<tr>
			<td>opts.prompt</td>
			<td>[可选]自定义的提示信息。</td>
		</tr>
		<tr>
			<td>opts.position</td>
			<td>[可选]显示位置，可选值：rb（右下角）。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>在界面右上角或右下角显示提示信息。</p>
	<p>本方式运行后返回信息显示元素，此元素包含一个close()方法，可以使用此方法手工关闭信息显示。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="topmsg_show_html"></pre>
	</fieldset>
	<h2>演示</h2>
	<fieldset>
		<legend>演示区域</legend>
		<div id="topmsg_demo_html">
			<button onclick="runme(this)">$js.topmsg({msg:'普通提醒信息'})</button>
			<button onclick="runme(this)">$js.topmsg({msg:'普通提醒信息（顶层窗口显示）',parent:top})</button>
			<button onclick="runme(this)">$js.topmsg({msg:'红色提醒信息',flag:true})</button>
			<button onclick="runme(this)">$js.topmsg({msg:'点击关闭消息的信息',timeout:0})</button>
			<button onclick="runme(this)">$js.topmsg({msg:'消息点击的处理',onclick:function(e,el){console.log('topmsg.close',e);el.close()}})</button>
			<script>
				function runme(e)
				{
					eval(e.innerHTML);
				}
			</script>
		</div>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.1.8版本开始支持。</p>
	<script>
		$js('#topmsg_show_html').text($js('#topmsg_demo_html').outerHTML()).unindent({ignore:1});
	</script>



<!--
//                                                  
//   #####  ####  #####  #    #  ####   ####  ##### 
//     #   #    # #    # ##  ## #    # #        #   
//     #   #    # #    # # ## # #    #  ####    #   
//     #   #    # #####  #    # #    #      #   #   
//     #   #    # #      #    # #    # #    #   #   
//     #    ####  #      #    #  ####   ####    #   
//                                                  
-->
	<a name="topmost"></a>
	<h1>$js.topmost / $js().topmost</h1>
	<h2>定义</h2>
	<p>$js.topmost(HtmlElement) : None</p>
	<p>$js.topmost(HtmlElements) : None</p>
	<p>$js().topmost() : JSLib</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>HtmlElement</td>
			<td>[必须]需要操作的HTML元素。</td>
		</tr>
		<tr>
			<td>HtmlElements</td>
			<td>[必须]需要操作的HTML元素数组。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>设置指定HTML元素的zIndex属性为当前页面最大，即HTML元素置顶显示。</p>
	<p>此方法同时存在静态方法和实例方法，使用时请根据具体场景选择。实例方法实际相当于：$js.topmost($js(...))</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="topmost_show_html"></pre>
	</fieldset>
	<h2>演示</h2>
	<fieldset>
		<legend>演示区域</legend>
		<div id="topmost_demo_html" style="display: flex;">
			<div style="position: relative;width: 120px;height: 90px;">
				<div id="topmost_1" style="position: absolute;left: 0px;top: 0px;width: 60px;height: 60px;background-color: #f00;">Layer1</div>
				<div id="topmost_2" style="position: absolute;left: 30px;top: 30px;width: 60px;height: 60px;background-color: #0f0;">Layer2</div>
			</div>
			<div>
				<input type="button" value="Layer1 topmost" onclick="$js('#topmost_1').topmost()"><br>
				<input type="button" value="Layer2 topmost" onclick="$js('#topmost_2').topmost()">
			</div>
		</div>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.1.1版本开始支持。</p>
	<script>
		$js('#topmost_show_html').text($js('#topmost_demo_html').outerHTML()).unindent({ignore:1});
	</script>


<!--
//                              
//   ##### #####  ###### ###### 
//     #   #    # #      #      
//     #   #    # #####  #####  
//     #   #####  #      #      
//     #   #   #  #      #      
//     #   #    # ###### ###### 
//                              
-->
	<a name="tree"></a>
	<h1>$js.tree / $js().tree</h1>
	<h2>定义</h2>
	<p>$js.tree(opts) : HtmlElement</p>
	<p>$js().tree(opts) : HtmlElement</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>opts</td>
			<td>[必须]生成树的选项。</td>
		</tr>
		<tr>
			<td>opts.data</td>
			<td>[可选]树型结构数据。</td>
		</tr>
		<tr>
			<td>opts.dataurl</td>
			<td>[可选]树型结构从网络读取的URL。此参数与opts.data只能设置一个。此URL返回的数据格式参考opts.data说明。</td>
		</tr>
		<tr>
			<td>opts.def</td>
			<td>[可选]默认数据项,这个是与opts.data[].i比较得出的。</td>
		</tr>
		<tr>
			<td>opts.drag=false|true</td>
			<td>[可选]是否支持位置拖拽。默认值：false。</td>
		</tr>
		<tr>
			<td>opts.ondragfinish=function(e1,e2){}</td>
			<td>[可选]拖拽后节点位置e1操作节点，e2目标节点。</td>
		</tr>
		<tr>
			<td>opts.expand=false|true</td>
			<td>[可选]自动展开所有子节点。默认值：false。</td>
		</tr>
		<tr>
			<td>opts.root_expand=false|true</td>
			<td>[可选]自动展开根节点。默认值：false。</td>
		</tr>
		<tr>
			<td>opts.onclick</td>
			<td>[可选]节点点击时处理的回调函数。</td>
		</tr>
		<tr>
			<td>opts.ondblclick</td>
			<td>[可选]节点双击时处理的回调函数。</td>
		</tr>
		<tr>
			<td>opts.onmousedown</td>
			<td>[可选]节点mousedown事件的回调函数。</td>
		</tr>
		<tr>
			<td>opts.parent</td>
			<td>[可选]生成树型结构的上层元素(HtmlElement)或元素ID(String)。注意，实例方法调用时会忽略此参数。</td>
		</tr>
		<tr>
			<td>opts.radio=false|true</td>
			<td>[可选]节点前是否显示RADIO选择。获取选择节点数据，可以使用obj.radio_get方法。</td>
		</tr>
		<tr>
			<td>opts.selected_class=''</td>
			<td>[可选]选择节点的显示样式类。获取选择节点数据，可以使用obj.selected_get方法。需要注意的是，这个selected_class与radio参数是两个独立功能，这两个采用了完全不同的处理方式。</td>
		</tr>
		<tr>
			<td>opts.url</td>
			<td>[可选]节点默认链接,如果节点数据存在a，则忽略此参数。此参数支持自定义变量{:i},这个变量会被自动替换为当前节点的opts.data[].i值。</td>
		</tr>
		<tr>
			<td>opts.target</td>
			<td>[可选]opts.url默认位置。</td>
		</tr>
		<tr>
			<td>opts.selectleaf=false|true</td>
			<td>[可选]只能选择叶节点。默认值：false。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>此方法生成可展开的树型HTML选择代码。</p>
	<p>opts.data结构说明：</p>
	<pre>	[
		{
			i:1,	//节点ID,
			t:'',	//显示文本
			g:'',	//图标路径
			a:'',	//节点URL，这个优先于opts.url。此参数支持自定义变量{:i},这个变量会被自动替换为当前节点的opts.data[].i值。
			u:'',	//用户自定义数据
			e:false|true	//标识节点不可选择
			c:[...],	//子节点,数据结构同本结构
			d:'',	//子节点从网络读取的地址。如果同时设置了c和d，则以c为准。
		},
		...
	]</pre>
	<p>opts.onclick中，可以通过e.target.parentElement.data获取此节点的数据信息。</p>
	<p>成功执行后返回一个封装后的HtmlElement对象：</p>
	<pre>	{
		checkbox_clear:function(),		//清除所有选择项
		checkbox_set:function(id_list),	//设置选择项，id_list为选中数据的id列表。
		node_find:function(id),			//返回指定id的节点
		node_scroll:function(node),		//显示区域滚动到指定节点
		radio_get:function(),			//获取RADIO选择的数据，返回示例：{i:37,t:'筛分试验',u:'t0302/'}
		selected_get:function(),		//获取设置了selected_class类选择的数据，返回示例：{i:37,t:'筛分试验',u:'t0302/'}
		selected_claer:function(),		//清除设置了selected_class类选择的数据
	}
	</pre>
	<p>此方法同时存在静态方法和实例方法，使用时请根据具体场景选择。需要注意的是，实例方法会自动忽略opts.parent参数。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="tree_show_html"></pre>
	</fieldset>
	<fieldset>
		<legend>JavaScript</legend>
		<pre id="tree_show_js"></pre>
	</fieldset>
	<h2>演示</h2>
	<fieldset>
		<legend>演示区域</legend>
		<div id="tree_demo_html">
			<iframe name="tree_demo_iframe" style="float: right"></iframe>
			<div id="tree_demo_html_msg" style="background-color: #ffc;"></div>
		</div>
		<script>
			$js('#tree_show_html').text($js('#tree_demo_html').outerHTML()).unindent({ignore:1});
		</script>
		<script id="tree_demo_js">
			$js('#tree_demo_html').tree({
				selectleaf:true,
				url:"echo.html?id={:i}",
				target:'tree_demo_iframe',
				onclick:function(e)
				{
					$js('#tree_demo_html_msg').text('节点数据：'+JSON.stringify(e.target.parentElement.data));
				},
				data:[
					{i:1,t:'node 1',c:[
						{i:11,t:'node 11'},
						{i:12,t:'node 12'},
					]},
					{i:2,t:'node 2',a:'echo.html?test=1&newid={:i}'},
					{i:3,t:'node 3',c:[
						{i:31,t:'node 31'},
						{i:32,t:'node 32'},
					]},
				]
			});
		</script>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.1.5版本开始支持。</p>
	<p>本方法自0.2.5版本开始支持参数radio、selected_class。</p>
	<p>本方法自0.2.6版本开始支持返回对象selected_clear方法。</p>
	<script>
		$js('#tree_show_js').text($js('#tree_demo_js').outerHTML()).unindent({ignore:1});
	</script>



<!--
//                                              
//   ##### #####  #  ####   ####  ###### #####  
//     #   #    # # #    # #    # #      #    # 
//     #   #    # # #      #      #####  #    # 
//     #   #####  # #  ### #  ### #      #####  
//     #   #   #  # #    # #    # #      #   #  
//     #   #    # #  ####   ####  ###### #    # 
//                                                                                                  
-->
	<a name="trigger"></a>
	<h1>$js().trigger</h1>
	<h2>定义</h2>
	<p>$js().trigger(eventName) : JSLib</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>eventName</td>
			<td>[必须]事件名称。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>当前范围内元素，触发指定事件。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="trigger_show_html"></pre>
	</fieldset>
	<h2>演示</h2>
	<fieldset>
		<legend>演示区域</legend>
		<div id="trigger_demo_html">
			<input type="text" id="trigger_demo_1" onclick="$js.topmsg({msg:'click!!!'})">
			<input type="button" value="点这触发文本框的click事件" onclick="$js('#trigger_demo_1').trigger('click')">
		</div>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.1.20版本开始支持。</p>
	<script>$js('#trigger_show_html').text($js('#trigger_demo_html').outerHTML()).unindent({ignore:1});</script>



<!--
//                                                  
//   #####  ####  ###### #      ######  ####  ##### 
//     #   #      #      #      #      #    #   #   
//     #    ####  #####  #      #####  #        #   
//     #        # #      #      #      #        #   
//     #   #    # #      #      #      #    #   #   
//     #    ####  ###### ###### ######  ####    #   
//                                                  
-->
	<a name="tselect"></a>
	<h1>$js.tselect</h1>
	<h2>定义</h2>
	<p>$js.tselect(opts) : HtmlElement</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>opts</td>
			<td>[必须]选项。</td>
		</tr>
		<tr>
			<td>opts.class</td>
			<td>[可选]选择节点的CSS样式类名称。</td>
		</tr>
		<tr>
			<td>opts.data</td>
			<td>[可选]带选择数据，数据格式：[{id:'数据ID',text:'选中后显示文本',show:'选择时显示文本',search:'搜索数据'},{...}]</td>
		</tr>
		<tr>
			<td>opts.url</td>
			<td>[可选]数据读取地址，返回的数据格式与data相同。如果设置了data，则本属性无效。</td>
		</tr>
		<tr>
			<td>opts.data_url</td>
			<td>[可选]动态数据读取地址，返回数据格式与data相同。每次数据变化时，本方法都会调用此路径读取实时查询数据。读取地址示例：“http://test/data?search=”，在调用时会自动拼接输入数据到url后面。</td>
		</tr>
		<tr>
			<td>opts.el_select</td>
			<td>[可选]选择节点，可传递HtmlElement节点或节点ID。如果未传递，则本方法会自动生成一个。</td>
		</tr>
		<tr>
			<td>opts.el_select_name</td>
			<td>[可选]选择节点名称。</td>
		</tr>
		<tr>
			<td>opts.el_value</td>
			<td>[可选]对应的值节点，可传递HtmlElement节点或节点ID。如果未传递，则本方法会自动生成一个。</td>
		</tr>
		<tr>
			<td>opts.el_value_name</td>
			<td>[可选]对应的值节点名称。【此参数不推荐使用，请尽量使用opts.name替代本参数。如果两个同时设置则以opts.name为准】</td>
		</tr>
		<tr>
			<td>opts.name</td>
			<td>[可选]对应的值节点名称。</td>
		</tr>
		<tr>
			<td>opts.notfound</td>
			<td>[可选]设置未查找到数据项时的提示文本，如果不设置则显示默认文本。</td>
		</tr>
		<tr>
			<td>opts.onselected=function(data)</td>
			<td>[可选]选中数据后的回调。回调参数data为选中的数据值。</td>
		</tr>
		<tr>
			<td>opts.onselected2=function(data)</td>
			<td>[可选]选中或设置数据后的回调。回调参数data为选中的数据条目。</td>
		</tr>
		<tr>
			<td>opts.placeholder</td>
			<td>[可选]提示文本。</td>
		</tr>
		<tr>
			<td>opts.selected=false|true</td>
			<td>[可选]是否必须选择，默认：false。此值是true时，则输入的项目必须完全与数据相同才会选择，否则会自动清空。</td>
		</tr>
		<tr>
			<td>opts.autoselect=false|true</td>
			<td>[可选]是否自动选中，默认：false。此值是true时，则输入的项目与数据相同时，会自动响应选中。</td>
		</tr>
		<tr>
			<td>opts.search=true|false</td>
			<td>[可选]是否启用数据搜索功能，默认：true。</td>
		</tr>
		<tr>
			<td>opts.size=10</td>
			<td>[可选]单行文本框的长度。默认值：10。</td>
		</tr>
		<tr>
			<td>opts.value</td>
			<td>[可选]默认值。</td>
		</tr>
		<tr>
			<td>opts.value2={id:123,text:'show'}</td>
			<td>[可选]成对的默认值。</td>
		</tr>
	</table>
	<h2>返回</h2>
	<div>本方法返回opts.el_value节点。节点上附加方法：
<pre>{
	setdate(new_data),			//设置新的显示数据。注意，设置后会覆盖之前的数据
	setvalue:function(value),	//设置值，示例：obj.setvalue(10);
	setvalue2:function(value),	//设置显示值，示例：obj.setvalue2({id:12,text:'显示文本'});
	el_value:HtmlElement,		//值节点
}</pre>
	</div>
	<h2>说明</h2>
	<p>显示一个文本选择框。</p>
	<p>如果需要编辑文本框CSS样式，可直接设置.jslib_tselect样式即可。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>常用示例</legend>
		<pre id="tselect_show1"></pre>
		<pre id="tselect_show2"></pre>
	</fieldset>
	<fieldset>
		<legend>演示</legend>
		<style id="tselect_css">
			.tselect_custom
			{
				border:1px solid #ccc;
				padding: 4px;
			}
		</style>
		<script id="tselect_js">
			{
				let data1=[{id:1,text:'AAA'},{id:2,text:'BBB'},{id:3,text:'CCC'}];

				$js.tselect({class:'tselect_custom',data:data1,
					onselected:function(v){$js.topmsg({msg:`onselected(${v})`})},
					onselected2:function(v){$js.topmsg({msg:`onselected2(${JSON.stringify(v)})`})},
					placeholder:'任意输入'});

				$js.tselect({class:'tselect_custom',data:data1,
					onselected:function(v){$js.topmsg({msg:`onselected(${v})`})},
					onselected2:function(v){$js.topmsg({msg:`onselected2(${JSON.stringify(v)})`})},
					selected:true,autoselect:true,
					placeholder:'选择输入'});

				let data2=[{id:1,text:'1'},{id:2,text:'2'},{id:3,text:'3'},{id:4,text:'4'},{id:5,text:'5'}];
				$js.tselect({class:'tselect_custom',data:data2,
					onselected:function(v){$js.topmsg({msg:`onselected(${v})`})},
					onselected2:function(v){$js.topmsg({msg:`onselected2(${JSON.stringify(v)})`})},
					placeholder:'任意输入',suffix:'MPa'});
			}
		</script>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.1.35版本开始支持。</p>
	<p>本方法自0.2.8版本开始支持opts.name参数。</p>
	<p>本方法自0.2.21版本开始支持opts.suffix参数。</p>
	<p>本方法自0.2.27版本开始支持opts.autoselect参数。</p>
	<script>$js('#tselect_show1').text($js('#tselect_css').outerHTML()).unindent({ignore:1});</script>
	<script>$js('#tselect_show2').text($js('#tselect_js').outerHTML()).unindent({ignore:1});</script>




<!--
//                                                     
//   #    # #    # # #    # #####  ###### #    # ##### 
//   #    # ##   # # ##   # #    # #      ##   #   #   
//   #    # # #  # # # #  # #    # #####  # #  #   #   
//   #    # #  # # # #  # # #    # #      #  # #   #   
//   #    # #   ## # #   ## #    # #      #   ##   #   
//    ####  #    # # #    # #####  ###### #    #   #   
//                                                     
-->
	<a name="unindent"></a>
	<h1>$js.unindent / $js().unindent</h1>
	<h2>定义</h2>
	<p>$js.unindent(String,opts) : String</p>
	<p>$js().unindent(opts) : JSLib</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>String</td>
			<td>[必须]要处理的字符串。</td>
		</tr>
		<tr>
			<td>opts</td>
			<td>[可选]附加参数。</td>
		</tr>
		<tr>
			<td>opts.ignore</td>
			<td>[可选]指示忽略文本中的前opts.ignore行数据不进行处理。默认：0。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>处理指定字符串或HTML元素中的文本，使其去除每行文本中的相同空白(Tab或Space)前缀缩进。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="unindent_show_html"></pre>
	</fieldset>
	<h2>演示</h2>
	<fieldset>
		<legend>演示区域</legend>
		<div id="unindent_demo_html" style="display: flex;">
			<div style="position: relative;width: 120px;height: 90px;">
				<div id="unindent_1" style="position: absolute;left: 0px;top: 0px;width: 60px;height: 60px;background-color: #f00;">Layer1</div>
				<div id="unindent_2" style="position: absolute;left: 30px;top: 30px;width: 60px;height: 60px;background-color: #0f0;">Layer2</div>
			</div>
			<div>
				<input type="button" value="恢复" onclick="$js('#unindent_show_html').text($js('#unindent_demo_html').outerHTML())"><br>
				<input type="button" value="去除" onclick="$js('#unindent_show_html').unindent({ignore:1})"><br>
				注1：左侧图层仅作为代码展示使用，无实际意义。<br>
				注2：点击功能按钮后，效果请查看“示例”中的“HTML”代码区域。
			</div>
		</div>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.1.2版本开始支持。</p>
	<script>$js('#unindent_show_html').text($js('#unindent_demo_html').outerHTML()).unindent({ignore:1});</script>








	<a name="upfile"></a>
	<h1>$js.upfile</h1>
	<h2>定义</h2>
	<p>$js.upimage(opts) : Object</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>opts</td>
			<td>[可选]参数。</td>
		</tr>
		<tr>
			<td>opts.el</td>
			<td>[可选]上传操作节点区域，默认：当前位置。</td>
		</tr>
		<tr>
			<td>opts.el_dd</td>
			<td>[可选]拖动操作节点，默认：args['el']。</td>
		</tr>
		<tr>
			<td>opts.name='file'</td>
			<td>[可选]上传文件的文件域名称，默认：file。需注意，因为此组件支持批量上传，所以这个指定的名称在实际上传时会自动增加[]变为file[]（即使是限制了只能上传一个图片）。</td>
		</tr>
		<tr>
			<td>opts.url=$js.UPLOAD_FILE</td>
			<td>[可选]异步文件上传的处理路径，默认：$js.UPLOAD_FILE。</td>
		</tr>
		<tr>
			<td>opts.start=function(){...}</td>
			<td>[可选]开始上传文件时触发。</td>
		</tr>
		<tr>
			<td>opts.success=function(data){...}</td>
			<td>[可选]上传完后的处理程序,如果不设置，则执行默认处理。</td>
		</tr>
		<tr>
			<td>opts.success2=function(data){...}</td>
			<td>[可选]上传完后的处理函数,直接传函数名即可,如果设置，则会执行对应的函数。原因是：上面的success函数无法满足实际需求，当传入success时，不会执行ddupfile2中的success代码，实际是需要执行的。</td>
		</tr>
		<tr>
			<td>opts.success3=function(data){...}</td>
			<td>[可选]回调参数为原始数据。</td>
		</tr>
		<tr>
			<td>opts.dataType=function(){}</td>
			<td>[可选]上传完成后的回调参数类型。如果是Json类型则需要设置dataType=‘json’</td>
		</tr>
		<tr>
			<td>opts.text</td>
			<td>[可选]显示的提示文本。默认值为“文件拖拽到这里，即可直接上传。”</td>
		</tr>
		<tr>
			<td>opts.input</td>
			<td>[可选]是否显示浏览式文件上传。默认：显示。</td>
		</tr>
		<tr>
			<td>opts.count</td>
			<td>[可选]限制上传文件数量限制，默认：无限制。</td>
		</tr>
		<tr>
			<td>opts.files</td>
			<td>[可选]已上传文件列表。如果设置，则自动显示已上传文件的列表项。</td>
		</tr>
		<tr>
			<td>opts.addo</td>
			<td>[可选]文件浏览上传附加信息，现在在最后面。</td>
		</tr>
		<tr>
			<td>opts.addo2</td>
			<td>[可选]已上传部分的附加信息。</td>
		</tr>
		<tr>
			<td>opts.disabled=false</td>
			<td>[可选]文件上传是否可以修改 默认可修改</td>
		</tr>
		<tr>
			<td>opts.weixin=true|false</td>
			<td>[可选]开启微信上传</td>
		</tr>
		<tr>
			<td>opts.append=false|true</td>
			<td>[可选]追加模式</td>
		</tr>
		<tr>
			<td>opts.showfilesize=false|true</td>
			<td>[可选]显示文件尺寸</td>
		</tr>
		<tr>
			<td>opts.preview=false|true</td>
			<td>[可选]显示文件预览按钮</td>
		</tr>
		<tr>
			<td>opts.inparent=false|true</td>
			<td>[可选]显示在上层节点内</td>
		</tr>
	</table>
	<h2>返回</h2>
	<p>$ddupfile2对象：</p>
	<pre>	{
		function add_file(fn),		//添加指定路径的上传文件
	}</pre>
	<h2>说明</h2>
	<p>通过浏览器的文件拖拽或选择功能实现文件上传。</p>
	<p>opts.url是图片上传的处理URL路径，这个返回的应该是一个JSON格式的字符串表示上传后的文件绝对位置或相对opts.basepath的相对位置，示例：{"file":"25010922/abc.png"}。</p>
	<p>opts.success回调函数说明：</p>
	<pre>
	opts.success=function(data,last)
	{
		alert('回调数据:'+data);
		alert('是否最后一个数据:'+last);
	}
	</pre>
	<p>data参数为回调返回的数据，具体数据由args.url路径指定的文件为准；last字段返回当前回调的数据是否为最后一个上传的文件，如果是则返回true，否则返回false。</p>
</p>
	<p>此方法的返回值是一个upfile对象，对象内容包括：</p>
	<pre>
	obj.add_file(filepath);	//增加上传文件,返回显示区域节点。
</pre>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="upfile_show_html"></pre>
	</fieldset>
	<h2>演示</h2>
	<fieldset>
		<legend>演示区域</legend>
		<div id="upfile_demo_html" style="display: flex;">
			<form method="post" enctype="multipart/form-data">
				<script>
					let files=
					[
						'demo1.png',
						'demo2.png',
					];
				</script>
				<table border="1">
					<tr>
						<td>指定拖拽区域<br>指定显示文件</td>
						<td><script>$js.upfile({files:files});</script></td>
					</tr>
				</table>
				<input type="submit" value="SUBMIT">
			</form>
		</div>
	</fieldset>
	<h2>关联</h2>
	<p>
		<a href="api.php?#UPLOAD_FILE">UPLOAD_FILE</a> &nbsp;
		<a href="api.php?#UPLOAD_PATH">UPLOAD_PATH</a> &nbsp;
	</p>
	<h2>版本</h2>
	<p>本方法自0.2.31版本开始支持。</p>
	<script>$js('#upfile_show_html').text($js('#upfile_demo_html').outerHTML()).unindent({ignore:1});</script>




<!--
//                                               
//   #    # #####  # #    #   ##    ####  ###### 
//   #    # #    # # ##  ##  #  #  #    # #      
//   #    # #    # # # ## # #    # #      #####  
//   #    # #####  # #    # ###### #  ### #      
//   #    # #      # #    # #    # #    # #      
//    ####  #      # #    # #    #  ####  ###### 
//                                               
-->
	<a name="upimage"></a>
	<h1>$js.upimage / $js().upimage</h1>
	<h2>定义</h2>
	<p>$js.upimage(String,opts) : Object</p>
	<p>$js().upimage(opts) : Object</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>String</td>
			<td>[必须]要处理的字符串。</td>
		</tr>
		<tr>
			<td>opts</td>
			<td>[可选]附加参数。</td>
		</tr>
		<tr>
			<td>opts.el</td>
			<td>[可选]上传操作节点区域，默认：当前位置。</td>
		</tr>
		<tr>
			<td>opts.el_dd</td>
			<td>[可选]拖动操作节点，默认：args['el']。</td>
		</tr>
		<tr>
			<td>opts.name='file'</td>
			<td>[可选]上传文件的文件域名称，默认：file。需注意，因为此组件支持批量上传，所以这个指定的名称在实际上传时会自动增加[]变为file[]（即使是限制了只能上传一个图片）。</td>
		</tr>
		<tr>
			<td>opts.captrue='camera'</td>
			<td>[可选]手机图片上传时，优先使用摄像头直接拍照。</td>
		</tr>
		<tr>
			<td>opts.url=$js.UPLOAD_FILE</td>
			<td>[可选]异步文件上传的处理路径，默认：$js.UPLOAD_FILE。</td>
		</tr>
		<tr>
			<td>opts.localmode=false|true</td>
			<td>[可选]是否开启本地模式，默认：false。</td>
		</tr>
		<tr>
			<td>opts.start=function(){}</td>
			<td>[可选]开始上传时的回调函数。</td>
		</tr>
		<tr>
			<td>opts.success=function(){}</td>
			<td>[可选]上传完成后的回调。</td>
		</tr>
		<tr>
			<td>opts.dataType=function(){}</td>
			<td>[可选]上传完成后的回调参数类型。如果是Json类型则需要设置dataType=‘json’</td>
		</tr>
		<tr>
			<td>opts.text</td>
			<td>[可选]显示的提示文本。默认值为“文件拖拽到这里，即可直接上传。”</td>
		</tr>
		<tr>
			<td>opts.input</td>
			<td>[可选]是否显示浏览式文件上传。默认：显示。</td>
		</tr>
		<tr>
			<td>opts.count</td>
			<td>[可选]限制上传文件数量限制，默认：无限制。</td>
		</tr>
		<tr>
			<td>opts.files</td>
			<td>[可选]已上传文件列表。如果设置，则自动显示已上传文件的列表项。</td>
		</tr>
		<tr>
			<td>opts.basepath=$js.UPLOAD_FILE</td>
			<td>[可选]图片的基准路径。设置后所有显示的图片都会增加这个基准路径进行显示。默认：$js.UPLOAD_PATH。</td>
		</tr>
		<tr>
			<td>opts.addo</td>
			<td>[可选]input文件上传框的附加信息。内容可以为文本或元素。</td>
		</tr>
		<tr>
			<td>opts.disabled=false</td>
			<td>[可选]文件上传不可编辑</td>
		</tr>
		<tr>
			<td>opts.preview_width='96px'</td>
			<td>[可选]图片预览区域宽度，默认：96px。</td>
		</tr>
		<tr>
			<td>opts.preview_height='96px'</td>
			<td>[可选]图片预览区域高度，默认：96px。</td>
		</tr>
		<tr>
			<td>opts.preview_clickshow=false</td>
			<td>[可选]如果只有“预览”一个按钮时，直接进行预览操作。</td>
		</tr>
		<tr>
			<td>opts.preview_fullscreen=false|true</td>
			<td>[可选]全屏预览。此参数只有在iframe内才可使用，因为此参数实际上是把预览区域放在了top窗口。因为预览窗口的不一致，这会导致top窗口所在路径与当前窗口所在路径不在一个层级时，会导致图片相对路径的错误，这点在调用时需要注意。</td>
		</tr>
		<tr>
			<td>opts.usermedia=false</td>
			<td>[可选]优先UserMedia方式获取图片。</td>
		</tr>
		<tr>
			<td>opts.usermedia_webp=false</td>
			<td>[可选]使用UserMedia模式时，获取webp格式图片。</td>
		</tr>
		<tr>
			<td>opts.onremove=function(el){}</td>
			<td>[可选]移除图片时的回调函数，el为图片显示节点。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>通过浏览器的文件拖拽或选择功能实现图片文件上传及预览。</p>
	<p>opts.url是图片上传的处理URL路径，这个返回的应该是一个JSON格式的字符串表示上传后的文件绝对位置或相对opts.basepath的相对位置，示例：{"file":"25010922/abc.png"}。</p>
	<p>opts.success回调函数说明：</p>
	<pre>
	opts.success=function(data,last)
	{
		alert('回调数据:'+data);
		alert('是否最后一个数据:'+last);
	}
	</pre>
	<p>data参数为回调返回的数据，具体数据由args.url路径指定的文件为准；last字段返回当前回调的数据是否为最后一个上传的文件，如果是则返回true，否则返回false。</p>
</p>
	<p>此方法的返回值是一个upimage对象，对象内容包括：</p>
	<pre>
	obj.add_file(filepath);	//增加上传文件,返回显示区域节点。
						//返回节点的replace方法，可以替换图片。
	obj.input_onchange		//input[type=file].onchange事件处理
	obj.clear()			//清除当前已上传的图片
</pre>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="upimage_show_html"></pre>
	</fieldset>
	<h2>演示</h2>
	<fieldset>
		<legend>演示区域</legend>
		<div id="upimage_demo_html" style="display: flex;">
			<form method="post" enctype="multipart/form-data">
				<script>
					let upimage_files=
					[
						'demo1.png',
						'demo2.png',
					];
				</script>
				<table border="1">
					<tr>
						<td>指定拖拽区域<br>指定显示文件</td>
						<td><div style="position:relative;background-color:red;width:300px;height:200px;">
							<script>$js.upimage({files:upimage_files});</script></div></td>
					</tr>
					<tr>
						<td>指定显示文件<br>显示上传按钮</td>
						<td><script>$js.upimage({files:upimage_files,input:true});</script></td>
					</tr>
					<tr>
						<td>只读模式</td>
						<td><script>$js.upimage({files:upimage_files,disabled:true});</script></td>
					</tr>
					<tr>
						<td>仅“预览”按钮时直接最大化预览</td>
						<td>
							<script>$js.upimage({files:upimage_files,disabled:true,preview_clickshow:true});</script>
						</td>
					</tr>
					<tr>
						<td>仅“预览”按钮时直接最大化预览<br>全屏预览</td>
						<td>
							<script>$js.upimage({files:upimage_files,disabled:true,preview_clickshow:true,preview_fullscreen:true});</script>
						</td>
					</tr>
					<tr>
						<td>本地模式</td>
						<td><script>$js.upimage({files:upimage_files,input:true,localmode:true});</script></td>
					</tr>
					<tr>
						<td>文件上传时优先调用摄像头<br>(手机上使用)</td>
						<td>
							<script>$js.upimage({files:upimage_files,input:true,localmode:true,capture:'camera'});</script>
						</td>
					</tr>
					<tr>
						<td>摄像头直接调用<br>开启坐标<br>开启水印</td>
						<td>
							<script>
								$js.upimage({files:upimage_files,input:true,localmode:true,capture:'camera',usermedia:true,watermark:'拍摄时间: {:datetime}\n拍摄日期: {:date}\n位置坐标: {:lng},{:lat}',
									geo:true});
							</script>
						</td>
					</tr>
					<tr>
						<td>指定显示文件<br>显示上传按钮<br>设置显示区域大小</td>
						<td><script>$js.upimage({files:upimage_files,input:true,preview_width:'48px',preview_height:'48px'});</script></td>
					</tr>
				</table>
				<input type="submit" value="SUBMIT">
			</form>
		</div>
	</fieldset>
	<h2>关联</h2>
	<p>
		<a href="api.php?#UPLOAD_FILE">UPLOAD_FILE</a> &nbsp;
		<a href="api.php?#UPLOAD_PATH">UPLOAD_PATH</a> &nbsp;
	</p>
	<h2>版本</h2>
	<p>本方法自0.1.8版本开始支持。</p>
	<p>0.1.9版本增加onremove参数。</p>
	<script>$js('#upimage_show_html').text($js('#upimage_demo_html').outerHTML()).unindent({ignore:1});</script>



<!--
//   #     # ######  #       #######    #    ######          ####### ### #       ####### 
//   #     # #     # #       #     #   # #   #     #         #        #  #       #       
//   #     # #     # #       #     #  #   #  #     #         #        #  #       #       
//   #     # ######  #       #     # #     # #     #         #####    #  #       #####   
//   #     # #       #       #     # ####### #     #         #        #  #       #       
//   #     # #       #       #     # #     # #     #         #        #  #       #       
//    #####  #       ####### ####### #     # ######          #       ### ####### ####### 
//                                                   #######                             
-->
	<a name="UPLOAD_FILE"></a>
	<h1>$js.UPLOAD_FILE</h1>
	<h2>定义</h2>
	<p>$js.UPLOAD_FILE : String</p>
	<h2>说明</h2>
	<p>此变量标识系统默认的异步上传文件处理程序的路径，默认：../upfile.php。</p>
	<p>此变量指定的文件路径，用于文件的异步上传。使用本变量设置后，其他文件上传的相关方法会自动使用，这样可以无需在每次调用这类方法时多次设置（例如$js.upimage等组件）。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="UPLOAD_FILE_show_html">
	$js.UPLOAD_FILE='../php/upfile.php';
		</pre>
	</fieldset>
	<h2>关联</h2>
	<p>
		<a href="api.php?#UPLOAD_PATH">UPLOAD_PATH</a> &nbsp;
	</p>
	<h2>版本</h2>
	<p>本方法自0.1.9版本开始支持。</p>



<!--
//   #     # ######  #       #######    #    ######          ######     #    ####### #     # 
//   #     # #     # #       #     #   # #   #     #         #     #   # #      #    #     # 
//   #     # #     # #       #     #  #   #  #     #         #     #  #   #     #    #     # 
//   #     # ######  #       #     # #     # #     #         ######  #     #    #    ####### 
//   #     # #       #       #     # ####### #     #         #       #######    #    #     # 
//   #     # #       #       #     # #     # #     #         #       #     #    #    #     # 
//    #####  #       ####### ####### #     # ######          #       #     #    #    #     # 
//                                                   #######                                 
-->
	<a name="UPLOAD_PATH"></a>
	<h1>$js.UPLOAD_PATH</h1>
	<h2>定义</h2>
	<p>$js.UPLOAD_PATH : String</p>
	<h2>说明</h2>
	<p>此变量标识系统默认的上传文件基路径，默认：../data。</p>
	<p>此变量指定的文件路径，用于文件的显示、下载使用。使用本变量设置后，其他文件上传的相关方法会自动使用，这样可以无需在每次调用这类方法时多次设置（例如$js.upimage等组件）。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="UPLOAD_PATH_show_html">
	$js.UPLOAD_PATH='../upload';
		</pre>
	</fieldset>
	<h2>关联</h2>
	<p>
		<a href="api.php?#UPLOAD_FILE">UPLOAD_FILE</a> &nbsp;
	</p>
	<h2>版本</h2>
	<p>本方法自0.1.9版本开始支持。</p>



<!--
//                        
//   #    #   ##   #      
//   #    #  #  #  #      
//   #    # #    # #      
//   #    # ###### #      
//    #  #  #    # #      
//     ##   #    # ###### 
//                        
-->
	<a name="val"></a>
	<h1>$js().val</h1>
	<h2>定义</h2>
	<p>$js().val() : String</p>
	<p>$js().val(String,oninput) : JSLib</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>String</td>
			<td>[可选]要设置的字符串。</td>
		</tr>
		<tr>
			<td>oninput</td>
			<td>[可选]是否引发oninput事件。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>返回或设置INPUT类元素的值。</p>
	<p>传递String参数时，将设置当前所有匹配元素的value。未传递String参数时返回第一个匹配元素的value。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="val_show_html"></pre>
	</fieldset>
	<h2>示例</h2>
	<fieldset>
		<legend>演示区域</legend>
		<div id="val_demo_html">
			<form>
				<input type="text" name="val_demo_input_text" value="test test test">
				<input type="button" value="get value" onclick="$js('#val_demo_result').text('获取文本：'+$js('@val_demo_input_text').val())">
				<input type="button" value="set value" onclick="$js('@val_demo_input_text').val(new Date())">
			</form>
			<div id="val_demo_result"></div>
		</div>
	</fieldset>
	<h2>关联</h2>
	<p>
		<a href="api.php?#float">float</a> &nbsp;
		<a href="api.php?#int">int</a> &nbsp;
	</p>
	<h2>版本</h2>
	<p>本方法自0.1.7版本开始支持。</p>
	<script>$js('#val_show_html').text($js('#val_demo_html').outerHTML()).unindent({ignore:1});</script>



<!--
//                                               
//   #    # ###### #####   ####  #  ####  #    # 
//   #    # #      #    # #      # #    # ##   # 
//   #    # #####  #    #  ####  # #    # # #  # 
//   #    # #      #####       # # #    # #  # # 
//    #  #  #      #   #  #    # # #    # #   ## 
//     ##   ###### #    #  ####  #  ####  #    # 
//                                               
-->
	<a name="version"></a>
	<h1>$js.version</h1>
	<h2>定义</h2>
	<p>$js.version : String</p>
	<h2>说明</h2>
	<p>此属性返回当前JSLib版本。</p>
	<h2>示例</h2>
	<fieldset>
		<legend>JavaScript</legend>
		<pre id="version_src"></pre>
	</fieldset>
	<fieldset>
		<legend>输出示例</legend>
		<pre id="version_result">0.1.0</pre>
	</fieldset>
	<script id="version_js">
		$js('#version_result').text($js.version);
	</script>
	<h2>版本</h2>
	<p>本属性自0.0.0版本开始支持。</p>
	<p>自0.1.0版本开始变更为静态属性。</p>
	<script>$js('#version_src').text($js('#version_js').outerHTML()).unindent({ignore:1});</script>


<!--
//                                        
//   #    # # #    # #####   ####  #    # 
//   #    # # ##   # #    # #    # #    # 
//   #    # # # #  # #    # #    # #    # 
//   # ## # # #  # # #    # #    # # ## # 
//   ##  ## # #   ## #    # #    # ##  ## 
//   #    # # #    # #####   ####  #    # 
//                                        
-->
	<a name="window"></a>
	<h1>$js.window</h1>
	<h2>定义</h2>
	<p>$js.window(opts) : Object</p>
	<h2>参数</h2>
	<table>
		<tr>
			<td>opts</td>
			<td>[必须]窗口参数。</td>
		</tr>
		<tr>
			<td>opts.id</td>
			<td>[可选]窗口ID，如果没有提供，则自动生成一个。如果提供了，则首先会查找当前是否存在这个ID的窗口，如果存在则返回这个已存在的窗口，否则创建一个新的窗口。</td>
		</tr>
		<tr>
			<td>opts.className</td>
			<td>[可选]指定使用的窗口类。</td>
		</tr>
		<tr>
			<td>opts.parent=document.body</td>
			<td>[可选]窗口的上层节点。如果值为”parent”(字符串)则窗口会在上层窗口创建，“top”(字符串)则窗口在最上层窗口创建。</td>
		</tr>
		<tr>
			<td>opts.btn_close=true|false</td>
			<td>[可选]是否显示“关闭”按钮，默认：true。</td>
		</tr>
		<tr>
			<td>opts.btn_max=false|true</td>
			<td>[可选]是否显示“最大化”按钮，默认：false。</td>
		</tr>
		<tr>
			<td>opts.btn_min=false|true</td>
			<td>[可选]是否显示“最小化”按钮，默认：false。</td>
		</tr>
		<tr>
			<td>opts.btn_refresh=true|false</td>
			<td>[可选]是否显示"刷新"按钮，默认：true。</td>
		</tr>
		<tr>
			<td>opts.center=true|false</td>
			<td>[可选]窗口居中显示。</td>
		</tr>
		<tr>
			<td>opts.data=…</td>
			<td>[可选]window.frameElement.data附加数据。</td>
		</tr>
		<tr>
			<td>opts.icon=''</td>
			<td>[可选]设置窗口图标。注意：如果图标文件不存在等原因加载出错时，系统会自动替换为默认图标。</td>
		</tr>
		<tr>
			<td>opts.modal=true|false</td>
			<td>[可选]是否为模式窗口，是的话为true,默认：true。</td>
		</tr>
		<tr>
			<td>opts.url='...'</td>
			<td>[可选]显示的页面路径。</td>
		</tr>
		<tr>
			<td>opts.html=HtmlElement|HtmlString</td>
			<td>[可选]窗口内显示的html内容，这个不能与url同时使用，因为url使用iframe,html使用div。如果同时设置了url和html，则以url为准。
			如果传入的是TEMPLATE标签，则本方法会自动读取TEMPLATE内的内容。</td>
		</tr>
		<tr>
			<td>opts.title='...'</td>
			<td>[可选]窗口显示的标题。如果未设置窗口标题，则系统自动显示页面中的title。</td>
		</tr>
		<tr>
			<td>opts.width=520</td>
			<td>[可选]窗口默认宽度。默认值：520。</td>
		</tr>
		<tr>
			<td>opts.height=500</td>
			<td>[可选]窗口默认高度。</td>
		</tr>
		<tr>
			<td>opts.maxWidth='95%'</td>
			<td>[可选]设置窗口最大宽度，默认：无。</td>
		</tr>
		<tr>
			<td>opts.maxHeight='95%'</td>
			<td>[可选]设置窗口最大高度，默认：无。</td>
		</tr>
		<tr>
			<td>opts.mobile_max=true|false</td>
			<td>[可选]移动设备模式下是否默认最大化显示，默认：true。</td>
		</tr>
		<tr>
			<td>opts.onclose=function(){..}</td>
			<td>[可选]当onclose事件发生时触发。如果处理函数返回true，则不关闭当前窗口。</td>
		</tr>
		<tr>
			<td>opts.onmove=function(x,y){..}</td>
			<td>[可选]窗口移动时触发。</td>
		</tr>
		<tr>
			<td>opts.onresize=function(w,h){..}</td>
			<td>[可选]窗口改变大小时触发。</td>
		</tr>
		<tr>
			<td>opts.onshow=function(win){..}</td>
			<td>[可选]窗口显示时触发。</td>
		</tr>
		<tr>
			<td>opts.onxywh=function(x,y,w,h){..}</td>
			<td>[可选]窗口调整后触发（注：一旦进入移动或resize状态，即使数据没有改变也会触发）。</td>
		</tr>
		<tr>
			<td>opts.data=object</td>
			<td>[可选]用户自定义数据。</td>
		</tr>
		<tr>
			<td>opts.post={k:v,...}</td>
			<td>[可选]按照POST提交方式打开窗口。</td>
		</tr>
		<tr>
			<td>opts.add_btns:[...]</td>
			<td>[可选]窗口标题栏附加按钮。参数格式：<pre>[
	{
		id:'a123',			//按钮的唯一标识
		title:'鼠标放到按钮上显示的文字',
		text:'按钮上显示的文字'，
		class:'c123',			//CSS样式类名称
		onclick:function(){…}		//点击的处理
	},…
]</pre></td>
		</tr>
	</table>
	<h2>其他设置</h2>
	<table>
		<tr>
			<td>$js.window.DEFAULT_ICON='icon path'|[]</td>
			<td>设置全局窗口默认图标。如果调用$js.window时未指定图标，则以这个设置为准。此树型支持数组方式设置多个图标，当设置多个图标时，首先加载第一个图标，如果加载失败则会尝试加载第二个，如果还失败则继续加载下一个，直至全部加载失败后加载默认图标。</td>
		</tr>
	</table>
	<h2>说明</h2>
	<p>本方法执行后，返回一个HtmlElement元素，内置扩展方法：</p>
	<pre>
	{
		setZIndex(z),	//设置窗口z-index次序
		show(url),			//显示窗口。url未传递则显示当前页面内容，传递则显示新传递的url页面。
		showtop(w),		//显示指定窗口为前置窗口，如果传递null则显示当前zindex最大的窗口为前置窗口。
		body,	//如果参数设置了html，则返回这个body是包含html信息的节点。未使用html参数时，无此值。
	}
	</pre>
	<p>当前$js.window生成的是一个类似Windows 11的窗口。	默认情况下，窗口的最小大小为240px*160px，最大显示尺寸为95%*95%。</p>
	<p>在窗口内，调用 window.frameElement.close(); 来关闭窗口。如果调用时增加参数true则关闭窗口时不调用onclose事件，例如：</p>
	<pre>
	&lt;script>
		window.frameElement.close();
		window.frameElement.close(true);
	&lt;/script>
	</pre>
	需要获取弹出窗口中的数据，可以参照：
	<pre>
	&lt;script>
		var win;
		function openw()
		{
			win=$js.window({'title':'慢页面显示','url':'window.php?wait=1'});
		}

		function openr()
		{
			console.log(win.iframe);	//获取数据区域
			console.log(win.iframe.contentDocument);	//获取页面
			console.log(win.iframe.contentDocument.getElementById('test'));	//获取指定元素
		}
	&lt;/script>
</pre>
	<p>窗口内页面，可以调用window.frameElement.settitle(txt)修改窗口标题内容。</p>
	<p>如果想窗口显示时最大化，则可设置className=jslib_window_max来实现，例如：</p>
	<pre>
	$js.window({parent:top,url:'scene.php?display_id='+display_id,className:'jslib_window_max'});
	</pre>
	<h2>示例</h2>
	<fieldset>
		<legend>HTML</legend>
		<pre id="window_show_html"></pre>
	</fieldset>
	<h2>示例</h2>
	<fieldset>
		<legend>演示区域</legend>
		<div id="window_demo_html">
			<input type="button" value="最简窗口显示" onclick="$js.window({url:'api.html'})">
			<input type="button" value="宽800高600窗口显示" onclick="$js.window({url:'api.html',width:800,height:600})">
			<input type="button" value="显示一个非模式窗口" onclick="$js.window({url:'api.html',modal:false})">
			<input type="button" value="显示一个非模式窗口(居中)" onclick="$js.window({url:'api.html',modal:false,center:true})">
			<input type="button" value="在顶层显示一个模式窗口(居中)" onclick="$js.window({url:'api.html',parent:top})">
			<input type="button" value="在顶层显示一个非内模式窗口(居中)" onclick="$js.window({url:'api.html',modal:false,center:true,parent:top})">
			<input type="button" value="onmove测试)" onclick="window_demo_js()">
			<script>
				function window_demo_js()
				{
					$js.window({url:'home.html',
						onmove:function(x,y)
						{
							window_demo_result.innerHTML=`onmove(${x},${y})`;
						}
					});
				}
			</script>
		</div>
		<div id="window_demo_result"></div>
	</fieldset>
	<h2>版本</h2>
	<p>本方法自0.1.10版本开始支持。</p>
	<p>本方法自0.2.14版本开始支持参数onmove、onresize。</p>
	<p>本方法自0.2.16版本开始支持参数onxywh。</p>
	<p>本方法自0.2.17版本开始支持show方法的url参数。</p>
	<p>本方法自0.2.22版本开始$js.window.DEFAULT_ICON支持数组。</p>
	<p>本方法自0.2.26版本开始支持参数btn_close。</p>
	<script>$js('#window_show_html').text($js('#window_demo_html').outerHTML()).unindent({ignore:1});</script>


</body>
</html>